运行环境 数据库版本:11.2.0.1 运行平台:Linux 非归档无任何备份 数据库启动报错Tue Mar 04 15:22:16 2014 ALTER DATABASE OPEN Beginning crash recovery of 1 threads parallel recovery started with 32 processes Started redo scan Errors in file /opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_54101.trc (incident=16996): ORA-00600: internal error code, arguments: [kcrf_resilver_log_1],[0x7C0E59B40], [2], [], [], [], [], [], [], [], [], [] Incident details in:/opt/oracle/diag/rdbms/orcl/ORCL/incident/incdir_16996/ORCL_ora_54101_i16996.trc Trace dumping is performingid=[cdmp_20140304152217] Aborting crash recovery due to error 600 Errors in file/opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_54101.trc: ORA-00600: internal error code, arguments:[kcrf_resilver_log_1], [0x7C0E59B40], [2], [], [], [], [], [], [], [], [], [] Errors in file/opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_54101.trc: ORA-00600: internal error code, arguments:[kcrf_resilver_log_1], [0x7C0E59B40], [2], [], [], [], [], [], [], [], [], [] ORA-600 signalled during: ALTER DATABASEOPEN...
相关scn信息数据库scn信息 DBID | NAME | OPEN_MODE | CREATED | OPEN_MODE | LOG_MODE | CHECKPOINT_CHANGE# | CTL_CHANGE# | 1365059051 | ORCL | MOUNTED | 2014-01-19 17:18:35 | MOUNTED | NOARCHIVELOG | 48503067 | 48510748 |
数据文件scn信息 TS# | FILE# | FILE_SIZE_G | STATUS | ENABLED | SCN | STOP_SCN | 0 | 1 | 10.576171875 | SYSTEM | READ WRITE | 48503067 | | 1 | 2 | .751953125 | ONLINE | READ WRITE | 48503067 | | 2 | 3 | 1.025390625 | ONLINE | READ WRITE | 48503067 | | 4 | 4 | .0048828125 | ONLINE | READ WRITE | 48503067 | | 6 | 5 | 15 | ONLINE | READ WRITE | 48503067 | |
数据文件头scn信息 TS# | FILE# | TABLESPACE_NAME | STATUS | ERROR | FORMAT | REC | FUZ | SCN | 0 | 1 | SYSTEM | ONLINE | | 10 | NO | YES | 48503067 | 1 | 2 | SYSAUX | ONLINE | | 10 | NO | YES | 48503067 | 2 | 3 | UNDOTBS1 | ONLINE | | 10 | NO | YES | 48503067 | 4 | 4 | USERS | ONLINE | | 10 | NO | YES | 48503067 | 6 | 5 | ZNKK | ONLINE | | 10 | NO | YES | 48503067 |
这里的数据库ORACLE 11.2.0.1因为Bug9056657导致数据库redobuffer未完整写入到redo log,从而导致数据库在启动过程中出现ORA-00600[kcrf_resilver_log_1]错误,而导致无法启动。 恢复过程ORA-00600 [kcrf_resilver_log_1]处理Tue Mar 04 15:22:16 2014 ALTER DATABASE OPEN Beginning crash recovery of 1 threads parallel recovery started with 32 processes Started redo scan Errors in file/opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_54101.trc (incident=16996): ORA-00600: internal error code, arguments: [kcrf_resilver_log_1], [0x7C0E59B40], [2], [], [], [],[], [], [], [], [], [] 这里可以看出来,数据库在open过程中需要读取redo log进行实例恢复,但是由于redo log因为bug异常,导致实例恢复无法完整。也就是说数据库无法完成完成实例恢复,也就是说依靠数据库自身无法完成实例恢复,需要人工干预强制拉起数据库 尝试_allow_resetlogs_corruption= TRUE在数据库open过程不验证一致性,强制拉起数据库,报错如下: Thu Mar 06 16:41:02 2014 SMON: enabling cache recovery Errors in file/opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_60342.trc (incident=18197): ORA-00600: internal error code, arguments:[2662], [0], [48503075], [0], [48508238], [12583040], [], [], [], [], [], [] Incident details in:/opt/oracle/diag/rdbms/orcl/ORCL/incident/incdir_18197/ORCL_ora_60342_i18197.trc Errors in file/opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_60342.trc: ORA-00600: internal errorcode, arguments: [2662], [0], [48503075], [0], [48508238], [12583040], [], [],[], [], [], [] Errors in file/opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_60342.trc: ORA-00600: internal error code, arguments:[2662], [0], [48503075], [0], [48508238], [12583040], [], [], [], [], [], [] Error 600 happened during db open, shuttingdown database USER (ospid: 60342): terminating theinstance due to error 600 Instance terminated by USER, pid = 60342 ORA-1092 signalled during: alter databaseopen resetlogs... ORA-600[2662]恢复很常见的ORA-600[2662]错误,解决该问题的一般方法是推进scn,使用event 10015 推进scn,尝试open数据库,出现如下错误 SMON: enabling tx recovery Database Characterset is ZHS16GBK No Resource Manager plan active Errors in file/opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_smon_60678.trc (incident=19357): ORA-00600: internal error code, arguments:[4194], [], [], [], [], [], [], [], [], [], [], [] Incident details in:/opt/oracle/diag/rdbms/orcl/ORCL/incident/incdir_19357/ORCL_smon_60678_i19357.trc Errors in file/opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_60694.trc (incident=19405): ORA-00600: internal error code, arguments:[4193], [], [], [], [], [], [], [], [], [], [], [] Incident details in:/opt/oracle/diag/rdbms/orcl/ORCL/incident/incdir_19405/ORCL_ora_60694_i19405.trc Doing block recovery for file 3 block 1443 Resuming block recovery (PMON) for file 3block 1443 Block recovery from logseq 2, block 64 toscn 1073742051 Recovery of Online Redo Log: Thread 1 Group2 Seq 2 Reading mem 0 Mem# 0: /opt/oracle/oradata/orcl/redo02.log Block recovery stopped at EOT rba 2.67.16 Block recovery completed at rba 2.67.16,scn 0.1073742050 Doing block recovery for file 3 block 128 Resuming block recovery (PMON) for file 3block 128 Block recovery from logseq 2, block 64 toscn 1073742047 Recovery of Online Redo Log: Thread 1 Group2 Seq 2 Reading mem 0 Mem# 0: /opt/oracle/oradata/orcl/redo02.log Block recovery completed at rba 2.65.16,scn 0.1073742049 Errors in file/opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_smon_60678.trc: ORA-01595: error freeingextent (3) of rollback segment (1)) ORA-00600: internal errorcode, arguments: [4194], [], [], [], [], [], [], [], [], [], [], [] ORA-600[4194]恢复因为11G的undo segment名称后面有时间戳,而且通过strings也不太好定位到准确名称,因此直接使用dul挖取数据文件获得名称,然后使用_corrupted_rollback_segments屏蔽,然后顺利打开数据库 在最后导出过程中还发现ORA-8013,然后通过plsql抽取该表正常数据,完成这次恢复 该库恢复过程使用了不少隐含参数和event,可能导致数据不一致,强烈建议通过逻辑方式重建库,保证数据安全稳定。
|