DATAGUARD_standby刪除歸檔日誌的指令碼

lusklusklusk發表於2017-05-31
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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2140084/,如需轉載,請註明出處,否則將追究法律責任。

相關文章