Welcome 微信登录

首页 / 数据库 / MySQL / Oracle Data Guard (RAC+DG) 归档删除策略及脚本

1、Data Guard 主库归档文件删除策略:当我们设置:RMAN>configure archivelog deletion policy to applied on standby;在Maximum Availability和 Maximum Performance下,RMAN备份归档文件的时候,加上delete input的时候,归档会被删除。RMAN> configure archivelog deletion policy to none;此时归档删除策略会被取消。2、Data  Guard 备库归档文件删除策略此次备库的归档删除策略是在单机版的基础上进行升级,增加了日志功能,支持对2个节点RAC主库的归档文件在备库上删除的功能,可以作为计划任务执行也可以以交互的形式单独执行。由于备库一般不执行rman备份计划,所以需要脚本删除这些归档日志文件。[Oracle@ www.linuxidc.com backup_scripts]$ vim delstarch.shexport ORACLE_THREAD=$1
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=bdspoc
export SHELL_DIR=/u01/app/oracle/backup_scripts
export DATE=$(date +%Y-%m-%d %H:%M:%S)
if [ ! $ORACLE_THREAD ];then
read -p "Enter deleted thread[1|2]: "
DB_THREAD=$REPLY
else
DB_THREAD=$ORACLE_THREAD
fi
if [ $DB_THREAD == 1 ];then
del_seq=`ls /arch|grep ^1|cut -f2 -d_|sort -n |head -1`
echo $del_seq "is the minimum archlog sequence"
$ORACLE_HOME/bin/sqlplus -s "sys/***** as sysdba" <<eof >$SHELL_DIR/max_sn.log
set head off;
set feedback;
select max(sequence#) from v$log_history where THREAD#=1;
exit;
eof
max_sn=`cat /u01/app/oracle/backup_scripts/max_sn.log|awk "{print $1}"|grep ^[0-9]`
#保留最近的20个归档,其他都删除
max_sn=`expr $max_sn - 20`
echo $max_sn "is the maximum archlog sequence"
while [ $del_seq -lt $max_sn ]
do
DATE=$(date +%Y%m%d_%H%M%S)
rm /arch/1_"$del_seq"_816281825.arc
DATE=$(date +%Y-%m-%d %H:%M:%S)
#由于log_archive_format 为%t_%s_%r.arc类型,%r为resetlog id
echo "$DATE"  /arch/1_"$del_seq"_816281825.arc >> $SHELL_DIR/delarch.log
del_seq=`expr $del_seq + 1`
echo "$DATE"  1_"$del_seq"_816281825.arc
done
elif [ $DB_THREAD == 2 ];then
del_seq=`ls /arch|grep ^2|cut -f2 -d_|sort -n |head -1`
echo $del_seq "is the minimum archlog sequence"
$ORACLE_HOME/bin/sqlplus -s "sys/***** as sysdba" <<eof >$SHELL_DIR/max_sn.log
set head off;
set feedback;
select max(sequence#) from v$log_history where upper(THREAD#)=2;
exit;
eof
max_sn=`cat /u01/app/oracle/backup_scripts/max_sn.log|awk "{print $1}"|grep ^[0-9]`
max_sn=`expr $max_sn - 20`
echo $max_sn "is the maximum archlog sequence"
while [ $del_seq -lt $max_sn ]
do
rm /arch/2_"$del_seq"_816281825.arc
DATE=$(date +%Y-%m-%d %H:%M:%S)
echo "$DATE"  /arch/2_"$del_seq"_816281825.arc >> $SHELL_DIR/delarch.log
echo "$DATE"  2_"$del_seq"_816281825.arc  has been deleted
del_seq=`expr $del_seq + 1`
done
else
echo "$DATE"  There has a fault db_thread value! >> $SHELL_DIR/delarch.log
fi可以交互式执行,例如:[oracle@ www.linuxidc.com backup_scripts]$ sh delstarch.sh
Enter deleted thread[1|2]: 1                                    --选择删除从哪个节点归档来的日志文件
 也可以做成计划任务执行该脚本[root@ www.linuxidc.com ~]# crontab -l0 1 * * *  su - oracle -c   /u01/app/oracle/backup_scripts/delstarch.sh  10 2 * * *  su - oracle -c   /u01/app/oracle/backup_scripts/delstarch.sh 2每天1点执行1节点归档来的日志文件,2点执行2节点归档来的日志文件。推荐阅读:Oracle 11G RAC 修改归档模式 http://www.linuxidc.com/Linux/2013-07/87704.htmOracle RMAN 清除归档日志 http://www.linuxidc.com/Linux/2013-07/87298.htmOracle 11g Flashback Data Archive(闪回数据归档) http://www.linuxidc.com/Linux/2013-06/86696.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12PostgreSQL删除表中重复数据行Oracle 10g RAC RMAN备份异机单实例恢复相关资讯      Data Guard  Oracle RAC DG 
  • Data Guard高级应用:通过闪回恢复  (今 16:26)
  • 手工搭建Data Guard  (08月02日)
  • 使用Grid Control快速部署Oracle物  (04月18日)
  • Data Guard跳归档恢复的案例  (08月16日)
  • Data Guard中快速Switchover,  (06月18日)
  • 利用Oracle Data Guard完成跨平台  (01月09日)
本文评论 查看全部评论 (0)
表情: 姓名: 字数

版权所有©石家庄振强科技有限公司2024 冀ICP备08103738号-5 网站地图