ORA-00600 []kcbzpbuf_1] 恢复故障一例

首先尝试手工启动数据库

SQL>startup mount;

SQL>alter database open;

发现数据库无法启动,检查数据库alert日志发现出现如下报错:

Errors in file d:\oracle\product\10.2.0\admin\orcl\bdump\orcl_dbw0_4920.trc 

ORA-00600: 内部错误代码, 参数: [kcbzpbuf_1], [4], [1], [], [], [], [], []

这里的kcbzpbuf_1是指Redo前滚时在Buffer中校验数据时出了问题. 也就是说在数据库进行前滚恢复时,准备写一个数据块时发现了块损坏

通过添加隐藏参数屏蔽有问题的事务,尝试启动数据库,具体的隐藏参数如下:

SQL>SHUTDOWN ABORT

SQL>STARTUP MOUNT

SQL>Alter system set “_allow_resetlogs_corruption”=TRUE scope=both;

SQL>Alter system set “_allow_error_simulation”=TRUE scope=both;

SQL>ALTER DATABSAE OPEN;

但是还是无法启动数据,alert日志报错如下:

Errors in file d:\oracle\product\10.2.0\admin\orcl\bdump\orcl_dbw0_4920.trc:

ORA-00600: 内部错误代码, 参数: [2662], [3], [749007800], [3], [749148431], [2432696345], [], []

其中2662参数说明数据文件和控制文件的scn不一致, 749007800是数据文件scn, 749148431是控制文件scn,需要推进数据文件scn,使得数据文件和控制文件的scn一致,才能打开数据库.

使用隐藏参数:

SQL>shutdown abort

SQL>alter session set events 'IMMEDIATE trace name adjust_scn level 10';

SQL>alter database open;

还是无法启动数据库,说明我们推进的scn不对, alert日志有了新的信息:

Errors in file d:\oracle\product\10.2.0\admin\orcl\bdump\orcl_ora_2824.trc:

ORA-00600: internal error code, arguments: [2256], [0], [1073741824], [3119], [4171754090], [], [], []

其中3119标识了我们需要推进的scn.具体算法为:

n=(scn_wrap+1)*4=(3119+1)*4=12480

所以执行下面的sql:

SQL>SHUTDOWN ABORT

SQL>STARTUP MOUNT;

SQL> alter session set events 'IMMEDIATE trace name adjust_scn level 12480’;

SQL>ALTER DATABASE OPEN

到此数据库打开正常.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值