1、定时删除归档日志
30 2 * * 0 /home/oracle/zzh/del_arch.sh
30 2 * * 0 nohup /home/oracle/zzh/log/delete_arch.sh >/dev/null 2>&1 &
#!/bin/bash
echo "----------------------------------------`date`---------------------------------------"
source ~/.bash_profile
delarchtime=`date +"20%y%m%d%H%M%S"`
RMAN_LOG_FILE=/home/oracle/del_arch_${delarchtime}.log
rman target / <<EOF >> $RMAN_LOG_FILE
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog all completed before 'sysdate-7';
EOF
echo -e "\n"
echo "------------------------------------ FINISHED ------------------------------------"
2、删除活动ADG备用数据库归档
#!/bin/sh
#clean archived log
PATH=$PATH:$HOME/bin
export TMP=/tmp;
export TMPDIR=$TMP;
export ORACLE_BASE=/u01/app/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/11.2/db_1;
export ORACLE_SID=ORCL;
export PATH=/usr/sbin:$PATH;
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS";
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8;
export PATH
NOW=`date +%Y%m%d`
GAP_ARCH=`sqlplus -silent "/ as sysdba" <<EOF
set pagesize 0 feedback off verify off heading off echo off
select count(*) from v\\\$archive_gap_arch;
exit;`
ARCH_APPLIED=`sqlplus -silent "/ as sysdba" <<EOF
set pagesize 0 feedback off verify off heading off echo off
select count(*) from v\\\$archived_log where applied='NO';
exit;`
#check the archive log applicance and the GAP_ARCH information
if [ $GAP_ARCH -eq 0 ] && [ $ARCH_APPLIED -eq 0 ]
then
rman target / log=/home/oracle/log/del_arch_$NOW.log <<EOF
delete noprompt archivelog until time 'sysdate-7';
exit
EOF
else
echo "Please check the archivelog apply error!" >> /home/oracle/log/arch_error_$NOW.log
3、常用删除归档日志命令
--> 删除截止指定时间前的归档日志
delete noprompt archivelog until time "to_date('2022-05-20','YYYY-MM-DD')";
delete noprompt archivelog until time "to_date('2022-05-20 18:00:00','YYYY-MM-DD hh24:mi:ss')";
--> 删除指定序列为 111 的归档日志
delete archivelog until sequence 111;
--> 注意这个命令,删除系统时间1天以内到现在的归档日志
delete archivelog from time 'sysdate-1';
--> 该命令清除当前所有的归档日志
delete noprompt archivelog all completed before 'sysdate';
--> 该命令清除当前所有的归档日志
delete noprompt archivelog all completed before 'sysdate-0';
--> 该命令清除当前所有的归档日志
delete noprompt archivelog all;
--> 清理一个小时前的归档日志
delete force archivelog all completed before 'sysdate-1/24';