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

原创 2004年09月27日 11:27:00

主数据库传送到备用数据库的归档我们是采用脚本定期删除的,早期的脚本为;
#!/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日志中,留到下一次删除,解除了删除错误(多删除一个)与删除后马上运行该脚本产生错误的问题。

教你如何清除SQL日志

教你如何清除SQL日志 1.打开查询分析器,输入命令DUMP TRANSACTION 数据库名 WITH NO_LOG2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件...
  • b2b160
  • b2b160
  • 2009年02月23日 18:21
  • 1204

Oracle DataGuard学习笔记(2)物理Standby的配置

Oracle DataGuard学习笔记(2)物理Standby的配置     DataGuard是Oracle数据库软件集成的功能,不需要另外安装软件,只需要配置即可.     物理St...
  • gyming
  • gyming
  • 2017年01月08日 20:38
  • 571

数据库设计之备用字段

前几天在做一个web项目设计数据库时,一直在考虑是否需要设置备用字段。自己感觉增加备用字段用处不大,效率低,破坏命名标准。后来上网查了一下有一下比较: 有必要: 如果没有备用字段,如果后期要加字段,...
  • sunnyray0901
  • sunnyray0901
  • 2014年01月12日 22:30
  • 2633

SQL日志问题数据库日志已满问题的解决

1.清空日志 DUMP   TRANSACTION   库名   WITH   NO_LOG     2.收缩数据库文件(如果不压缩,数据库的文件不会减小 企业管理器--右键你要压缩的数据库...
  • hnnyhxjb
  • hnnyhxjb
  • 2017年02月17日 12:12
  • 554

备用数据库的配置

备用数据库的好处:1、备用数据库是和主数据库是同步的,而且一旦主数据库失败,可以在十分钟内切换到备用数据库上。2、备用数据库可以和主数据库通过net8通信,完成自动备份,不需要自己写自动备份脚本(意外...
  • twingao
  • twingao
  • 2005年11月07日 00:22
  • 1047

数据库设计误区:备用字段 / 保留字段 / 预留字段

数据库设计误区:备用字段 / 保留字段 / 预留字段 【现象描述】 在数据表中,不仅设计了当前所需要的字段,而且还在其中留出几个字段作为备用。 比方说,我设计了一个人员表(Person),其中已经添加...
  • iw1210
  • iw1210
  • 2015年03月30日 16:33
  • 7866

SQL SERVER数据库删除LOG文件和清空日志的方案

数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间。SQL Server数据库都有log文件,log文件记录用户对数据库修改的操作。可以通过直接删除log文件和清空日...
  • ding_dq
  • ding_dq
  • 2017年12月08日 09:52
  • 509

五步搞定Sql Server2005数据库日志清除

1、第一步,选中要清除日志的数据库——右键——属性。2、第二步:在选项页选中“选项”,恢复模式选择“简单”,点击最下边确定按钮。3、第三步,再选中数据库右键——任务——收缩——数据库。 4、第四步,点...
  • bill1315
  • bill1315
  • 2007年05月25日 22:33
  • 1245

sqlServer 数据库备用/只读、受限制用户、正在还原 admin 2017-12-05 67 --数据库备用只读 恢复正常: USE master RESTORE DATABASE hi

sqlServer 数据库备用/只读、受限制用户、正在还原 原文链接:http://www.itemperor.com/a/SQL/70.html --数据库备用只读 恢复正常: USE m...
  • qq_31796711
  • qq_31796711
  • 2017年12月06日 16:15
  • 95

sql server 定期自动清理日志

原文地址:点击打开链接 数据库日志文件是随着时间增长而增长的,如果长时间不清理,文件会变得特别大,因此需要定期清空,但是日至文件是恢复数据库的重要依据,不用日志文件也是不明智的。手工清除单个数...
  • qq798833488
  • qq798833488
  • 2016年05月11日 10:46
  • 1705
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:怎么样正确的删除备用数据库的日志
举报原因:
原因补充:

(最多只允许输入30个字)