Oracle Data Guard 备库 归档文件 删除脚本

2014-11-24 17:59:52 · 作者: · 浏览: 0

如果直接删除归档文件的话,可能会出现一种情况,就是归档文件还没有来的急apply,就被删除掉了。所以最安全的做法是在删除归档文件做一个判断。 然后在删除。


整理的一个删除备库的shell 脚本如下:


#!/usr/bin/ksh


# created by tianlesoftware


# 2010/12/24


export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1


export ORACLE_SID=xxxx


export SHELL_DIR=/u02/scripts


del_seq=`ls /u02/archivelog/|head -1|cut -f2 -d_`


echo $del_seq


$ORACLE_HOME/bin/sqlplus -s "user/pwd@sid_pd as sysdba" </u02/scripts/max_sn.log


set head off;


set feedback;


select max(sequence#) from v\$log_history;


exit;


eof


max_sn=`cat /u02/scripts/max_sn.log|awk '{print $1}'|grep ^[0-9]`


max_sn=`expr $max_sn - 30`


-- 我这里是保留最近的30个归档文件,这个具体情况自己决定


echo $max_sn


while [ $del_seq -lt $max_sn ]


do


rm /u02/archivelog/1_"$del_seq"_737806218.arc


-- 这里是我定义归档文件的格式,具体根据自己的归档文件格式来匹配,关键是匹配日志的sequence no。


del_seq=`expr $del_seq + 1`


echo $del_seq


done


--脚本里的红色部分根据自己的情况进行修改


del_st_archive.sh del_st_arch.log max_sn.log


--max_sn.log 是存放最大seq 的tmp文件。 用来进行比较的


添加到crontab,定时执行:


00 6 * * * /u02/scripts/del_st_archive.sh >/u02/scripts/del_st_arch.log 2>&1