Skip to content

2662

通过oradebug的方式解决ORA-00600 [2662]

2662出问题的根源是数据文件的某些block的scn比文件头的scn还要大,通常处理的方法就是将当前的scn推进到比block的scn更大的时候就可以.

使用oradebug的方式处理该问题主要流程如下:

1.定位出问题的block,一般为2662错误后面的e为该block dba,查处该block的scn(2662错误后的d)
2.定位当前系统的scn,一般为2662错误后面的b为该current scn
3.核对系统scn与block scn的差值(根据adjust算法得出的scn差值 也可以)
4.使用oradebug 推荐当前系统scn比block还大为止
5.打开数据库,执行重建

遭遇ora-00600 [2662]一例

遭遇2662错误,

Thu Jul 24 00:45:47 2014
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
Thu Jul 24 00:45:47 2014
ARC0: Becoming the 'no FAL' ARCH
ARC0: Becoming the 'no SRL' ARCH
Thu Jul 24 00:45:47 2014
ARC1: Becoming the heartbeat ARCH
Thu Jul 24 00:45:47 2014
SMON: enabling cache recovery
Thu Jul 24 00:45:47 2014
Errors in file /ora10g/admin/lu10g/udump/lu10g_ora_16481.trc:
ORA-00600: internal error code, arguments: [2662], [0], [10480758], [0], [10480787], [4194313], [], []
Thu Jul 24 00:45:48 2014
Errors in file /ora10g/admin/lu10g/udump/lu10g_ora_16481.trc:
ORA-00600: internal error code, arguments: [2662], [0], [10480758], [0], [10480787], [4194313], [], []
Thu Jul 24 00:45:48 2014
Error 600 happened during db open, shutting down database
USER: terminating instance due to error 600
Instance terminated by USER, pid = 16481
ORA-1092 signalled during: alter database open resetlogs...

根据《谈谈adjust_scn的计算方法》的方式处理,使用adjust处理的计算过程如下:
因为c=0所以c*4=0,因为D=10480787 < 1073741824,所以WRAP=0+1,所以整个adjust的level 为1,则处理的语句为如下:
alter session set events ‘IMMEDIATE trace name ADJUST_SCN level 1’;

当然这里也可以通过oradebug poke的方式更改scn的wrap+1以达到一样的效果.

登录数据库执行处理如下:

SQL&gt; conn / as sysdba
Connected to an idle instance.
SQL&gt; startup mount
ORACLE instance started.
Total System Global Area 318767104 bytes
Fixed Size 1267260 bytes
Variable Size 100665796 bytes
Database Buffers 213909504 bytes
Redo Buffers 2924544 bytes
Database mounted.

SQL&gt; alter session set events 'IMMEDIATE trace name ADJUST_SCN level 1';

Session altered.

SQL&gt; alter database open;

Database altered.

至此数据库已经打开,此时应该用dump工具导出数据重建数据库,因为此时数据库运行会非常艰难,后台会不断报错,比如:
ORA-00600: internal error code, arguments: [kcsadjn1], [], [], [], [], [], [], []

所以建议还是需要做好备份以及容灾,避免出现各类问题。当然这里的scn还可以通过其他推进scn的方式来解决,比如在11204版本后,就需要使用其他手段来推进SCN,传统方式在110204已经不支持,具体参考以前写的手工推荐scn的5种方式。