联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
以前写过删除dataguard归档日志的方法(删除data guard归档日志),但是以前的方法确实不够灵活也不够简便,现在提供最新的一次在客户现场部署的dg删除归档日志的shell脚本
#!/bin/sh source ~/.bash_profile grep "Media Recovery Log" $ORACLE_BASE/admin/$ORACLE_SID/bdump/alert_${ORACLE_SID}.log| \ awk '{print $4}'|sed -e 's/^/rm /' >/tmp/rmarchlog.sh chmod +x /tmp/rmarchlog.sh /tmp/rmarchlog.sh cd $ORACLE_BASE/admin/$ORACLE_SID/bdump cat alert_${ORACLE_SID}.log >>alert_${ORACLE_SID}.log.bak echo ''>alert_${ORACLE_SID}.log rm -f /tmp/rmarchlog.sh $ORACLE_HOME/bin/rman target / <<XIFENFEI crosscheck archivelog all; delete expired archivelog all; YES exit; XIFENFEI
根据alert日志中dg应用日志的信息”Media Recovery Log”信息来删除掉相关的归档日志,可以保证应用过的归档日志都被删除,而没有应用的归档日志都保留.
咦,怎么跟我用的一样
用这个”Media Recovery Log”条件来判断删除备库归档日志,可能会存在漏删的情况
因为,当备份处在Real Time apply的模式下
应用日志,有时会产生”Recovery of Oline redo log”的输出,而没有”Media Recovery Log”这个的输出,所以会出现漏删的情况