ORA-600 [kclchkblk_4]

故障描述

 某客户一套基于AIX小机的11.2.0.4 RAC环境,可能是因为存储故障,该客户对该数据库进行了不完全恢复,具体细节未知,客户在执行alter database open 阶段报错,数据库无法正常打开。

该客户的最终需求是想办法open数据库,他们后续将数据逻辑导出。

 

故障分析

1、让现场的同事上传当前的数据库alert日志。alert日志错误提示如下所示。

Wed Feb 21 10:15:35 2024

Dumping diagnostic data in directory=[cdmp_20240221101535], requested by (instance=2, osid=17236000), summary=[incident=88000246].

Errors in file /u01/app/oracle/diag/rdbms/softdb/SOFTDB2/trace/SOFTDB2_ora_17236000.trc:

ORA-00600: internal error code, arguments: [kclchkblk_4], [2545], [2622609950], [2545], [2582025071], [], [], [], [], [], [], []

Errors in file /u01/app/oracle/diag/rdbms/softdb/SOFTDB2/trace/SOFTDB2_ora_17236000.trc:

ORA-00600: internal error code, arguments: [kclchkblk_4], [2545], [2622609950], [2545], [2582025071], [], [], [], [], [], [], []

Error 600 happened during db open, shutting down database

USER (ospid: 17236000): terminating the instance due to error 600

Instance terminated by USER, pid = 17236000

ORA-1092 signalled during: alter database open...

可见,在执行alter database open时,遭遇了ORA-00600 [kclchkblk_4]错误。

 

2、关于ORA-00600 [kclchkblk_4]错误,MOS上真正有价值的文档是《In 10.1.0.2: ORA-600 [kclchkblk_4] and ORA-600 [2662] After Recovery of Database (Doc ID 275902.1)》,该文件中提及:Error, ORA-600 [kclchkblk_4], is signaled because the SCN in a tempfile block is too high.也即问题的原因是tempfile block的SCN比datafile的高。Doc ID 275902.1给出的解决办法是删除数据库中的所有tempfiles,等数据库正常open后,再重新添加tempfiles. 但这种解决办法也可能无法解决故障。

 

3、最终选择直接推进SCN。

SQL> oradebug setmypid

SQL> oradebug dumpvar SGA kcsgscn_

kcslf kcsgscn_ [700000000019B70, 700000000019BA0) = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 07000000 00019850

 

SQL> col expect for 999999999999999999999

SQL> select 2545*power(2,32) + 2622609950 as expect from dual;

                EXPECT

----------------------

        10933314378270

 

SQL> oradebug poke 0x700000000019B70  8 10933314378270

 

4、再次尝试打开数据库,仍然报错,具体如下所示:

 这说明第3步中推进的SCN还是太小了一点,但2622609966与2622610008已经非常接近,没有必要再次推进SCN,只需要简单地重启一两次数据库即可。

 

5、让现场的同事再次重启数据库,同事反馈数据库可以正常open。剩余的事情就是交付客户进行逻辑导出了。

 

posted @ 2024-02-26 10:26  石云华  阅读(19)  评论(0编辑  收藏  举报