Oracle的奇葩设置之归档清理作业与rm -rf

    虽然,Linux、Unix主机的定时任务crontab对于应用或数据库服务器的日常维护起到了很大的作用,但是,一旦设置不合理,就会给应用或数据库服务器的正常运行带来潜在的安全隐患。
    在联通有这么奇葩的设置,那个超级不合理的设置是关于oracle数据库归档清理的。主机维护人员为了减轻日常维护负担,将清理任务交给了crontab,放了一个清理脚本在数据库服务器上。令谁都想不到的是脚本清理归档的命令是:rm -rf ....。由于数据库服务器存储空间压力很大,需要该脚本没30分钟运行一次,来释放空间。由于数据库归档进程会不定时运行,有与该脚本耦合的可能,结果还真的发生了。导致数据库正在归档的归档文件被rm -rf强制删除掉了,因而数据库无法完成归档,告警日志一直报错如下:
Wed Jul  9 22:30:46 2014
Errors in file /oracle/admin/cdma/bdump/cdma_arc1_25303.trc:
ORA-19510: 无法设置 984377 区块的大小给文件 "/oradata2/cdma/archivelog/1_2302874_696954518.dbf" (块大小 = 512)
ORA-27037: 无法获得文件状态
    经过查找, /oradata2/cdma/archivelog/1_2302874_696954518.dbf已经不存在了。更严重的后果是,由于正在归档的归档被删除还导致双击异常而发生切换,而且这种由于归档误删除发生双击切换还不止一次。从操作系统的messages文件有印证,如上述告警报错,只要是归档进程正在归档还没完成,而rm -rf定时任务删除了正在归档的文件,都是半点发生的。然后solaris双击软件日志文件检测数据库核心进程异常,就切换oracle数据库到另外一个节点运行,但是数据库到对端运行还是不能完成归档,又发生切换。
    后来,通过与主机、应用协商采用rman自动删除归档来避免正在归档的文件被误删除,具体的命令如下:
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=/oracle/app/oracle/product/10.2.0.5/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=orcl105
rman target / nocatalog log /tmp/rman_delete_arch.log append<   allocate channel c1 type disk;

allocate channel c2 type disk;

allocate channel c3 type disk;

sql 'alter system archive log current';

crosscheck backup;

crosscheck archivelog all;

delete noprompt obsolete;

delete noprompt archivelog all;
EOF
通过归档文件清理脚本的调整,该双击数据库因归档误删除的问题解决了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29357786/viewspace-1440904/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29357786/viewspace-1440904/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值