记一次数据库在线current redo损坏故障,2662,ora-600

本文记录了一次Oracle数据库因current redo损坏引发ora-600 2662错误的故障处理过程。通过开启隐藏参数,重建控制文件,尝试使用介质恢复和调整SCN,最终成功修复并打开数据库,但部分数据丢失。
摘要由CSDN通过智能技术生成

环境:开发库 oracle 11.2.0.4 + suse linux 12 

故障现象:巡检时发现,数据库已经挂掉。

处理过程:

查看alert日志,发现实例被终结了,且日志里面有如下报错:

Errors in file /srv/oracle/diag/rdbms/oracledb/oracledb/trace/oracledb_lgwr_29710.trc:
ORA-00316: log 1 of thread 1, type 0 in header is not log file
ORA-00312: online log 1 thread 1: '/opt/oradata/oracledb/redo01.log'
Errors in file /srv/oracle/diag/rdbms/oracledb/oracledb/trace/oracledb_lgwr_29710.trc:
ORA-00316: log 1 of thread 1, type 0 in header is not log file
ORA-00312: online log 1 thread 1: '/opt/oradata/oracledb/redo01.log'
LGWR (ospid: 29710): terminating the instance due to error 316

看报错信息,推断是 redo01.log文件损坏。

启库到mount阶段,查询日志文件状态。

select group#,thread#,archived,status from v$log;



很不幸,current redo中枪了。

对于该文件损坏,网上已经有了一套完整的处理方案:

1, pfile 开启隐藏参数 _allow_resetlogs_corruption 

2,使用pfile 启动到 mount阶段,

recover database until cancel ;

alter database open resetlogs 试着打开数据库。 一般情况下,数据库可以被打开,不过是要报一些 ora-600 2662  错误。

3,使用数据泵导出数据库数据,这时会丢部分数据(也就是损坏日志中包含的数据,因为没有被检查点写入数据文件)

4,重建新库,导入数据。

通常来讲,上述办法是可行的,但是这里不行。下面是我的处理过程。

pfile 加入*._allow_resetlogs_corruption=true 参数,

startup mount;

alter database open resetlogs; --提示需要recover数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值