联系:手机/微信(+86 17813235971) QQ(107644445)
标题:Oracle Recovery Tools修复ORA-00742、ORA-600 ktbair2: illegal inheritance故障
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
接到客户反馈,一套运行在虚拟化平台中的Oracle数据库,由于机房断电,导致数据库无法启动,最初启动报错
2025-04-22T16:59:48.922227+08:00 Completed: alter database mount exclusive alter database open 2025-04-22T16:59:52.609726+08:00 Ping without log force is disabled: instance mounted in exclusive mode. 2025-04-22T16:59:52.937852+08:00 Beginning crash recovery of 1 threads parallel recovery started with 15 processes Thread 1: Recovery starting at checkpoint rba (logseq 11031 block 139863), scn 0 2025-04-22T16:59:53.094081+08:00 Started redo scan 2025-04-22T16:59:53.203464+08:00 Completed redo scan read 15533 KB redo, 1140 data blocks need recovery 2025-04-22T16:59:53.515972+08:00 Hex dump of (file 3,block 82642) in trace file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_p001_6612.trc Corrupt block relative dba: 0x00c142d2 (file 3,block 82642) Fractured block found during crash/instance recovery Data in bad block: type: 6 format: 2 rdba: 0x00c142d2 last change scn: 0x0000.0001.7a0219e2 seq: 0x1 flg: 0x06 spare3: 0x0 consistency value in tail: 0x0fcb0601 check value in block header: 0x82eb computed block checksum: 0x172a 2025-04-22T16:59:53.563004+08:00 Reading datafile 'D:\APP\ADMINISTRATOR\ORADATA\HIS\SYSAUX01.DBF' for corrupt data at rdba: 0x00c142d2 (file 3,block 82642) Reread (file 3,block 82642) found same corrupt data (no logical check) 2025-04-22T16:59:54.578467+08:00 Hex dump of (file 3,block 207498) in trace file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_p000_6064.trc 2025-04-22T16:59:54.578467+08:00 Corrupt block relative dba: 0x00c32a8a (file 3,block 207498) Fractured block found during crash/instance recovery Data in bad block: type: 6 format: 2 rdba: 0x00c32a8a last change scn: 0x0000.0001.731ec74f seq: 0x2 flg: 0x06 spare3: 0x0 consistency value in tail: 0x10520601 check value in block header: 0x61c3 computed block checksum: 0xe27a Reading datafile 'D:\APP\ADMINISTRATOR\ORADATA\HIS\SYSAUX01.DBF' for corrupt data at rdba: 0x00c32a8a (file 3,block 207498) Reread (file 3,block 207498) found same corrupt data (no logical check) Hex dump of (file 4, block 3959) in trace file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_p000_6064.trc Corrupt block relative dba: 0x01000f77 (file 4, block 3959) Fractured block found during crash/instance recovery Data in bad block: type: 2 format: 2 rdba: 0x01000f77 last change scn: 0x0000.0001.79fa3621 seq: 0x4 flg: 0x04 spare3: 0x0 consistency value in tail: 0xcf6c0201 check value in block header: 0x99d2 computed block checksum: 0x79e0 Reading datafile 'D:\APP\ADMINISTRATOR\ORADATA\HIS\UNDOTBS01.DBF' for corrupt data at rdba: 0x01000f77 (file 4,block 3959) Reread (file 4, block 3959) found same corrupt data (no logical check) 2025-04-22T16:59:54.640991+08:00 Started redo application at Thread 1: logseq 11031, block 139863, offset 0 2025-04-22T16:59:54.672246+08:00 Recovery of Online Redo Log: Thread 1 Group 3 Seq 11031 Reading mem 0 Mem# 0: D:\APP\ADMINISTRATOR\ORADATA\HIS\REDO03.LOG 2025-04-22T16:59:54.703494+08:00 Hex dump of (file 3,block 89738) in trace file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_p006_5236.trc Corrupt block relative dba: 0x00c15e8a (file 3,block 89738) Fractured block found during crash/instance recovery Data in bad block: type: 6 format: 2 rdba: 0x00c15e8a last change scn: 0x0000.0001.7a09108a seq: 0x2 flg: 0x06 spare3: 0x0 consistency value in tail: 0x278e0602 check value in block header: 0xd721 computed block checksum: 0x2705 Reading datafile 'D:\APP\ADMINISTRATOR\ORADATA\HIS\SYSAUX01.DBF' for corrupt data at rdba: 0x00c15e8a (file 3,block 89738) Reread (file 3,block 89738) found same corrupt data (no logical check) 2025-04-22T16:59:54.734756+08:00 Hex dump of (file 3,block 9504) in trace file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_p005_3660.trc Reading datafile 'D:\APP\ADMINISTRATOR\ORADATA\HIS\SYSAUX01.DBF' for corrupt data at rdba: 0x00c02520 (file 3,block 9504) Reread (file 3,block 9504) found same corrupt data (logically corrupt) ***************************************************************** An internal routine has requested a dump of selected redo. This usually happens following a specific internal error, when analysis of the redo logs will help Oracle Support with the diagnosis. It is recommended that you retain all the redo logs generated (by all the instances) during the past 12 hours, in case additional redo dumps are required to help with the diagnosis. ***************************************************************** 2025-04-22T16:59:54.750364+08:00 Exception [type: ACCESS_VIOLATION, UNABLE_TO_READ] [ADDR:0xC] [PC:0x7FF64221F2F8, kdxlin()+4824] Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_p008_3964.trc (incident=521460): ORA-07445: 出现异常错误: 核心转储 [kdxlin()+4824][ACCESS_VIOLATION][ADDR:0xC][PC:0x7FF64221F2F8][UNABLE_TO_READ][] Incident details in: D:\APP\ADMINISTRATOR\diag\rdbms\his\his\incident\incdir_521460\his_p008_3964_i521460.trc Use ADRCI or Support Workbench to package the incident. See Note 411.1 at My Oracle Support for error and packaging details. 2025-04-22T16:59:55.156605+08:00 Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_p005_3660.trc: ORA-00742: 日志读取在线程 1 序列 11029 块 51218 中检测到写入丢失情况 ORA-00312: 联机日志 1 线程 1: 'D:\APP\ADMINISTRATOR\ORADATA\HIS\REDO01.LOG' 2025-04-22T16:59:55.828516+08:00 Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_p00a_3428.trc (incident=521476): ORA-00600: 内部错误代码, 参数: [ktbair2: illegal inheritance], [], [], [], [], [], [], [], [], [], [], [] Incident details in: D:\APP\ADMINISTRATOR\diag\rdbms\his\his\incident\incdir_521476\his_p00a_3428_i521476.trc Use ADRCI or Support Workbench to package the incident. See Note 411.1 at My Oracle Support for error and packaging details. 2025-04-22T16:59:56.844113+08:00 Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_p006_5236.trc (incident=521444): ORA-00600: 内部错误代码, 参数: [ktbair2: illegal inheritance], [], [], [], [], [], [], [], [], [], [], [] Incident details in: D:\APP\ADMINISTRATOR\diag\rdbms\his\his\incident\incdir_521444\his_p006_5236_i521444.trc Use ADRCI or Support Workbench to package the incident. See Note 411.1 at My Oracle Support for error and packaging details. 2025-04-22T16:59:59.062944+08:00 Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_p005_3660.trc: ORA-00742: 日志读取在线程 1 序列 11029 块 51218 中检测到写入丢失情况 ORA-00334: 归档日志: 'D:\APP\ADMINISTRATOR\ORADATA\HIS\REDO01.LOG' 2025-04-22T16:59:59.156645+08:00 Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_p00a_3428.trc: ORA-00742: 日志读取在线程 1 序列 11029 块 51218 中检测到写入丢失情况 ORA-00312: 联机日志 1 线程 1: 'D:\APP\ADMINISTRATOR\ORADATA\HIS\REDO01.LOG' ORA-00600: 内部错误代码, 参数: [ktbair2: illegal inheritance], [], [], [], [], [], [], [], [], [], [], [] Incident details in: D:\APP\ADMINISTRATOR\diag\rdbms\his\his\incident\incdir_521477\his_p00a_3428_i521477.trc 2025-04-22T17:00:04.250414+08:00 Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_p006_5236.trc: ORA-00742: 日志读取在线程 1 序列 11029 块 51218 中检测到写入丢失情况 ORA-00334: 归档日志: 'D:\APP\ADMINISTRATOR\ORADATA\HIS\REDO01.LOG' ORA-00600: 内部错误代码, 参数: [ktbair2: illegal inheritance], [], [], [], [], [], [], [], [], [], [], [] 2025-04-22T17:00:04.344200+08:00 Slave encountered ORA-10388 exception during crash recovery Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_p006_5236.trc (incident=521445): ORA-01578: ORACLE 数据块损坏 (文件号 3, 块号 299732) ORA-01110: 数据文件 3: 'D:\APP\ADMINISTRATOR\ORADATA\HIS\SYSAUX01.DBF' ORA-10564: tablespace SYSAUX ORA-01110: 数据文件 3: 'D:\APP\ADMINISTRATOR\ORADATA\HIS\SYSAUX01.DBF' ORA-10561: block type 'TRANSACTION MANAGED INDEX BLOCK', data object# 11351 ORA-00600: 内部错误代码, 参数: [ktbair2: illegal inheritance], [], [], [], [], [], [], [], [], [], [], [] Incident details in: D:\APP\ADMINISTRATOR\diag\rdbms\his\his\incident\incdir_521445\his_p006_5236_i521445.trc 2025-04-22T17:00:05.312967+08:00 Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_p00a_3428.trc: ORA-01578: ORACLE 数据块损坏 (文件号 3, 块号 216445) ORA-01110: 数据文件 3: 'D:\APP\ADMINISTRATOR\ORADATA\HIS\SYSAUX01.DBF' ORA-10564: tablespace SYSAUX ORA-01110: 数据文件 3: 'D:\APP\ADMINISTRATOR\ORADATA\HIS\SYSAUX01.DBF' ORA-10561: block type 'TRANSACTION MANAGED DATA BLOCK', data object# 11171 ORA-00600: 内部错误代码, 参数: [ktbair2: illegal inheritance], [], [], [], [], [], [], [], [], [], [], [] 2025-04-22T17:00:05.359805+08:00 Slave encountered ORA-10388 exception during crash recovery 2025-04-22T17:00:06.172286+08:00 Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_p006_5236.trc: ORA-01578: ORACLE 数据块损坏 (文件号 3, 块号 299732) ORA-01110: 数据文件 3: 'D:\APP\ADMINISTRATOR\ORADATA\HIS\SYSAUX01.DBF' ORA-10564: tablespace SYSAUX ORA-01110: 数据文件 3: 'D:\APP\ADMINISTRATOR\ORADATA\HIS\SYSAUX01.DBF' ORA-10561: block type 'TRANSACTION MANAGED INDEX BLOCK', data object# 11351 ORA-00600: 内部错误代码, 参数: [ktbair2: illegal inheritance], [], [], [], [], [], [], [], [], [], [], [] 2025-04-22T17:00:06.172286+08:00 Slave encountered ORA-1578 exception during crash recovery Slave exiting with ORA-1578 exception 2025-04-22T17:00:06.172286+08:00 Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_p006_5236.trc: ORA-01578: ORACLE 数据块损坏 (文件号 3, 块号 299732) ORA-01110: 数据文件 3: 'D:\APP\ADMINISTRATOR\ORADATA\HIS\SYSAUX01.DBF' ORA-10564: tablespace SYSAUX ORA-01110: 数据文件 3: 'D:\APP\ADMINISTRATOR\ORADATA\HIS\SYSAUX01.DBF' ORA-10561: block type 'TRANSACTION MANAGED INDEX BLOCK', data object# 11351 ORA-00600: 内部错误代码, 参数: [ktbair2: illegal inheritance], [], [], [], [], [], [], [], [], [], [], [] ORA-1578 signalled during: alter database open...
这里面主要报错有几大类:
1.在需要实例恢复的block中有坏块,而且主要集中在3号文件(sysaux)上
2. ORA-00742: 日志读取在线程 1 序列 11029 块 51218 中检测到写入丢失情况
3. ORA-600 ktbair2: illegal inheritance错误
对于这些问题的本质都是数据库无法正常实例恢复,尝试按照数据文件级别进行恢复操作,结果只有datafile 3 不成功
2025-04-22T20:11:36.724880+08:00 ALTER DATABASE RECOVER datafile 3 2025-04-22T20:11:36.740523+08:00 Media Recovery Start 2025-04-22T20:11:36.771771+08:00 Serial Media Recovery started 2025-04-22T20:11:36.896781+08:00 Recovery of Online Redo Log: Thread 1 Group 3 Seq 11031 Reading mem 0 Mem# 0: D:\APP\ADMINISTRATOR\ORADATA\HIS\REDO03.LOG Exception [type: ACCESS_VIOLATION, UNABLE_TO_READ] [ADDR:0xC] [PC:0x7FF64221F2F8, kdxlin()+4824] Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_ora_2512.trc (incident=721216): ORA-07445: ??????: ???? [kdxlin()+4824] [ACCESS_VIOLATION] [ADDR:0xC] [PC:0x7FF64221F2F8] [UNABLE_TO_READ] [] Incident details in: D:\APP\ADMINISTRATOR\diag\rdbms\his\his\incident\incdir_721216\his_ora_2512_i721216.trc Use ADRCI or Support Workbench to package the incident. See Note 411.1 at My Oracle Support for error and packaging details. 2025-04-22T20:12:56.585813+08:00 ALTER DATABASE RECOVER datafile 3 2025-04-22T20:12:56.601434+08:00 Media Recovery Start 2025-04-22T20:12:56.601434+08:00 Serial Media Recovery started 2025-04-22T20:12:57.351435+08:00 Recovery of Online Redo Log: Thread 1 Group 3 Seq 11031 Reading mem 0 Mem# 0: D:\APP\ADMINISTRATOR\ORADATA\HIS\REDO03.LOG 2025-04-22T20:12:58.492071+08:00 Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_ora_5332.trc (incident=721217): ORA-00600: 内部错误代码, 参数: [ktbair2: illegal inheritance], [], [], [], [], [], [], [], [], [], [], [] Incident details in: D:\APP\ADMINISTRATOR\diag\rdbms\his\his\incident\incdir_721217\his_ora_5332_i721217.trc Use ADRCI or Support Workbench to package the incident. See Note 411.1 at My Oracle Support for error and packaging details. 2025-04-22T20:13:00.710878+08:00 ***************************************************************** An internal routine has requested a dump of selected redo. This usually happens following a specific internal error, when analysis of the redo logs will help Oracle Support with the diagnosis. It is recommended that you retain all the redo logs generated (by all the instances) during the past 12 hours, in case additional redo dumps are required to help with the diagnosis. ***************************************************************** 2025-04-22T20:13:01.398399+08:00 Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_ora_5332.trc: ORA-00742: 日志读取在线程 1 序列 11029 块 51218 中检测到写入丢失情况 ORA-00312: 联机日志 1 线程 1: 'D:\APP\ADMINISTRATOR\ORADATA\HIS\REDO01.LOG' ORA-00600: 内部错误代码, 参数: [ktbair2: illegal inheritance], [], [], [], [], [], [], [], [], [], [], [] 2025-04-22T20:13:03.820304+08:00 Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_mz00_2200.trc: ORA-01110: 数据文件 3: 'D:\APP\ADMINISTRATOR\ORADATA\HIS\SYSAUX01.DBF' 2025-04-22T20:13:06.070340+08:00 Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_ora_5332.trc: ORA-00742: 日志读取在线程 1 序列 11029 块 51218 中检测到写入丢失情况 ORA-00334: 归档日志: 'D:\APP\ADMINISTRATOR\ORADATA\HIS\REDO01.LOG' ORA-00600: 内部错误代码, 参数: [ktbair2: illegal inheritance], [], [], [], [], [], [], [], [], [], [], [] 2025-04-22T20:13:06.085990+08:00 Media Recovery failed with error 10562 ORA-283 signalled during: ALTER DATABASE RECOVER datafile 3 ...
对于这样的故障,前段时间通过Oracle Recovery Tools工具处理过类似异常:Oracle Recovery Tools修复ORA-600 6101/kdxlin:psno out of range故障
然后尝试recover datafile 3,并打开数据库成功

至此数据库open成功,由于该库有不少坏块(包括system的一些字典),后续使用逻辑方式迁移数据到新库中(其中由于C_OBJ#簇中有坏块,导致迁移过程中大量index丢失,通过一些方法使用obj$,inde$等基表人工生成index.sql对于丢失的index进行弥补),最终客户业务正常运行