oracle用户下crontab增加任务计划
*/15 * * * * /u01/app/scripts/remove_stdby_arch.sh>>/dev/null 2>&1
如下信息表示删除1小时以前的,已经通过RFS进程接受的并被recover的归档日志
select max(completion_time)-1/24 from v\$archived_log where sequence# is NOT NULL and applied='YES' and registrar ='RFS'
脚本名称/u01/app/scripts/remove_stdby_arch.sh
脚本内容
#!/bin/sh
source ~/.bash_profile
sqlplus "/as sysdba" < set pagesize 200
set heading off
set feedback off
spool /u01/app/script/remove_arch_file.lst
select 'rm '|| al.name from v\$archived_log al
where al.sequence# is NOT NULL and al.applied='YES' and al.registrar ='RFS'
and al.name like '/u01/app/oracle/archivelog/1_%.dbf'
and al.completion_time < (select max(completion_time)-1/24 from v\$archived_log where sequence# is NOT NULL and applied='YES' and registrar ='RFS')
order by al.sequence#;
spool off
exit
EOF
sed '1,5d' /u01/app/script/remove_arch_file.lst | sed '$d' > /u01/app/script/remove_arch_file.sh
DELETE_LOG=/u01/app/script/log/remove_stdby_arch`date "+%Y%m%d%H%M%S"`.log
echo "************SQL************">$DELETE_LOG
cat /u01/app/script/remove_arch_file.lst>>$DELETE_LOG
echo "************RM***********">>$DELETE_LOG
cat /u01/app/script/remove_arch_file.sh>>$DELETE_LOG
sh /u01/app/script/remove_arch_file.sh
echo "************RMAN************">>$DELETE_LOG
rman target / >> $DELETE_LOG << EOF
run{
CROSSCHECK ARCHIVELOG ALL;
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
}
exit
EOF
#自己最常用最简单的一个
#!/bin/sh
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=MESDB
FILEDATE=`date '+%Y%m%d%H%M%S'`
LOGFILE=/u01/app/backup/deletearchivelog/deletearchivelog_$FILEDATE.log
/u01/app/oracle/product/11.2.0/dbhome_1/bin/rman target / > ${LOGFILE} << EOF
delete noprompt archivelog until time "sysdate-7";
EOF