怎么样正确的删除备用数据库的日志

主数据库传送到备用数据库的归档我们是采用脚本定期删除的,早期的脚本为;
#!/bin/sh
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/9.2
export ORACLE_SID=tbdb1in1
export BDUMP=/opt/oracle/admin/tbdb1/bdump
export HOME=/home/oracle
export PATH=$PATH:$ORACLE_HOME/bin:/sbin:/usr/sbin
grep "Media Recovery Log" $BDUMP/alert_${ORACLE_SID}.log|awk '{print $4}'|sed -e 's/^/rm /' >$HOME/worksh/rmarchlog.sh
chmod +x $HOME/worksh/rmarchlog.sh

$HOME/worksh/rmarchlog.sh
cd $BDUMP

cat alert_${ORACLE_SID}.log >>alert_${ORACLE_SID}.log.bak
>alert_${ORACLE_SID}.log

rm -f $HOME/worksh/rmarchlog.sh

但是,马上就发现问题了,
1、是如果一个日志开始恢复,但是还没有恢复完成的时候,其实在alert日志中已经记载了Media Recovery Log的信息,如果这个时候,我打开(open read only)来查询数据库,这个日志实际上没有恢复完,但是,因为在alert日志中有其信息,所以,日志删除程序就会误删这个日志。
2、如果删除成功,马上运行该脚本将产生一个错误,因为alert日志与归档目录都没有东西了,这个错误虽然不影响什么,但是看上去也不好。

因为前几次多删除了领头的日志,而主库也备份并删除了,最后不得不从备份中恢复该日志,所以,改写了日志删除程序脚本。
#!/bin/sh
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/9.2
export ORACLE_SID=tbdb2in1
export BDUMP=/opt/oracle/admin/tbdb2/bdump
export HOME=/home/oracle
export PATH=$PATH:$ORACLE_HOME/bin:/sbin:/usr/sbin
grep "Media Recovery Log" $BDUMP/alert_${ORACLE_SID}.log|grep 1_|sed '$d'|awk '{print $4}'|sed -e 's/^/rm /' > $HOME/worksh/rmarchlo
g.sh
grep "Media Recovery Log" $BDUMP/alert_${ORACLE_SID}.log|grep 1_|sed -n '$p' > $HOME/logs/logtmp.log
grep "Media Recovery Log" $BDUMP/alert_${ORACLE_SID}.log|grep 2_|sed '$d'|awk '{print $4}'|sed -e 's/^/rm /' >> $HOME/worksh/rmarchl
og.sh
grep "Media Recovery Log" $BDUMP/alert_${ORACLE_SID}.log|grep 2_|sed -n '$p' >> $HOME/logs/logtmp.log

chmod +x $HOME/worksh/rmarchlog.sh

$HOME/worksh/rmarchlog.sh
cd $BDUMP

cat alert_${ORACLE_SID}.log >>alert_${ORACLE_SID}.log.bak
cat $HOME/logs/logtmp.log > alert_${ORACLE_SID}.log

rm -f $HOME/worksh/rmarchlog.sh

改写后的脚本,保留每个线程中最后一个日志不删除,并返回到alert日志中,留到下一次删除,解除了删除错误(多删除一个)与删除后马上运行该脚本产生错误的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值