联系:手机/微信(+86 17813235971) QQ(107644445)
标题:不当恢复truncate数据导致数据库不能open处理
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
有客户误truncate操作干掉了数据库中的几张表,然后尝试通过FY_Recover_Data进行恢复,恢复到一半然后终止了,数据库结果就起不来了(具体什么原因不知道,肯定是各种不合适的操作引起的故障),我接手故障的时候,数据库被强制resetlogs,报ORA-600 2662错误
Fri Jan 30 10:24:16 2026 alter database open resetlogs RESETLOGS is being done without consistancy checks. This may result in a corrupted database. The database should be recreated. RESETLOGS after incomplete recovery UNTIL CHANGE 49708968810 Clearing online redo logfile 1 /u01/oracle/oradata/orcl/redo01.log Clearing online log 1 of thread 1 sequence number 1069648 Clearing online redo logfile 1 complete Clearing online redo logfile 2 /u01/oracle/oradata/orcl/redo02.log Clearing online log 2 of thread 1 sequence number 1069649 Clearing online redo logfile 2 complete Clearing online redo logfile 3 /u01/oracle/oradata/orcl/redo03.log Clearing online log 3 of thread 1 sequence number 1069647 Clearing online redo logfile 3 complete Resetting resetlogs activation ID 1738690566 (0x67a25006) Online log /u01/oracle/oradata/orcl/redo01.log: Thread 1 Group 1 was previously cleared Online log /u01/oracle/oradata/orcl/redo02.log: Thread 1 Group 2 was previously cleared Online log /u01/oracle/oradata/orcl/redo03.log: Thread 1 Group 3 was previously cleared Fri Jan 30 10:24:17 2026 Setting recovery target incarnation to 3 Fri Jan 30 10:24:17 2026 Assigning activation ID 1751706121 (0x6868ea09) Thread 1 opened at log sequence 1 Current log# 1 seq# 1 mem# 0: /u01/oracle/oradata/orcl/redo01.log Successful open of redo thread 1 MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set Fri Jan 30 10:24:17 2026 SMON: enabling cache recovery Errors in file /u01/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_14707.trc (incident=123363): ORA-00600: 内部错误代码, 参数: [2662], [11], [2464328561], [11], [2464328917], [12583040], [], [], [], [] Incident details in: /u01/oracle/diag/rdbms/orcl/orcl/incident/incdir_123363/orcl_ora_14707_i123363.trc Fri Jan 30 10:24:18 2026 Use ADRCI or Support Workbench to package the incident. See Note 411.1 at My Oracle Support for error and packaging details. Errors in file /u01/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_14707.trc: ORA-00600: 内部错误代码, 参数: [2662], [11], [2464328561], [11], [2464328917], [12583040], [], [], [], [] Errors in file /u01/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_14707.trc: ORA-00600: 内部错误代码, 参数: [2662], [11], [2464328561], [11], [2464328917], [12583040], [], [], [], [] Error 600 happened during db open, shutting down database USER (ospid: 14707): terminating the instance due to error 600 Instance terminated by USER, pid = 14707 ORA-1092 signalled during: alter database open resetlogs... Use ADRCI or Support Workbench to package the incident. See Note 411.1 at My Oracle Support for error and packaging details. Use ADRCI or Support Workbench to package the incident. See Note 411.1 at My Oracle Support for error and packaging details. Errors in file /u01/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_14707.trc: ORA-00600: 内部错误代码, 参数: [2662], [11], [2464328564], [11], [2464328917], [12583040], [], [], [], [] ORA-00600: 内部错误代码, 参数: [2662], [11], [2464328563], [11], [2464328917], [12583040], [], [], [], [] ORA-01092: ORACLE 实例终止。强制断开连接 ORA-00600: 内部错误代码, 参数: [2662], [11], [2464328561], [11], [2464328917], [12583040], [], [], [], [] Errors in file /u01/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_14707.trc: ORA-27300: 操作系统系统相关操作: semctl 失败, 状态为: 22 ORA-27301: 操作系统故障消息: Invalid argument ORA-27302: 错误发生在: sskgpwpost1 ORA-27303: 附加信息: semid = 32779 ORA-00600: 内部错误代码, 参数: [2662], [11], [2464328564], [11], [2464328917], [12583040], [], [], [], [] ORA-00600: 内部错误代码, 参数: [2662], [11], [2464328563], [11], [2464328917], [12583040], [], [], [], [] ORA-01092: ORACLE 实例终止。强制断开连接 ORA-00603: ORACLE server session terminated by fatal error ORA-00600: internal error code, arguments: [2662], [11], [2464328564], [11], [2464328917], [12583040], [] ORA-00600: internal error code, arguments: [2662], [11], [2464328563], [11], [2464328917], [12583040], [] ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00600: internal error code, arguments: [2662], [11], [2464328561], [11], [2464328917], [12583040], []
通过Oracle数据库异常恢复检查脚本(Oracle Database Recovery Check)脚本检查发现有文件被offline,且resetlogs 信息不对

通过obet工具(Oracle数据块编辑工具( Oracle Block Editor Tool)-obet)对resetlogs相关信息进行修改
OBET> set mode edit mode set to: edit OBET> set file 18 filename set to: /tmp/FY_RST_DATA.DAT (file#18) OBET> copy resetlogscn file 1 to file 18 Confirm Modify resetlogscn: Source: file#1 (/u01/oracle/oradata/orcl/system01.dbf) Target: file#18 (/tmp/FY_RST_DATA.DAT) Proceed? (Y/YES to confirm): y Successfully copied resetlog SCN information from file#1 to file#18. OBET> copy chkscn file 1 to file 18 Confirm Modify chkscn: Source: file#1 (/u01/oracle/oradata/orcl/system01.dbf) Target: file#18 (/tmp/FY_RST_DATA.DAT) Proceed? (Y/YES to confirm): y Successfully copied checkpoint SCN information from file#1 to file#18. OBET> sum Check value for File /tmp/FY_RST_DATA.DAT, Block 1: current = 0xF8EA, required = 0xFCEA OBET> sum check Warning: Unknown option 'check', ignored Check value for File /tmp/FY_RST_DATA.DAT, Block 1: current = 0xF8EA, required = 0xFCEA OBET> sum apply Confirm applying checksum: File: /tmp/FY_RST_DATA.DAT Block: 1 Offset in block: 16 (file offset: 0x00002010) Original value: 0xF8EA New value: 0xFCEA Confirm? (Y/YES to proceed): y Verification successful: Stored checksum matches calculated value (0xFCEA). Checksum applied successfully.
然后尝试打开库,报ORA-600 kdourp_inorder2错误
Database Characterset is ZHS16GBK Errors in file /u01/oracle/diag/rdbms/orcl/orcl/trace/orcl_smon_9198.trc (incident=159324): ORA-00600: internal error code, arguments: [kdourp_inorder2], [16], [0], [146], [108], [], [], [], [], [] Incident details in: /u01/oracle/diag/rdbms/orcl/orcl/incident/incdir_159324/orcl_smon_9198_i159324.trc Stopping background process MMNL Use ADRCI or Support Workbench to package the incident. See Note 411.1 at My Oracle Support for error and packaging details. Block recovery from logseq 2, block 39 to scn 49708988852 Recovery of Online Redo Log: Thread 1 Group 2 Seq 2 Reading mem 0 Mem# 0: /u01/oracle/oradata/orcl/redo02.log Block recovery completed at rba 2.42.16, scn 11.2464348597 ORACLE Instance orcl (pid = 14) - Error 600 encountered while recovering transaction (14, 8) on object 14. Errors in file /u01/oracle/diag/rdbms/orcl/orcl/trace/orcl_smon_9198.trc: ORA-00600: internal error code, arguments: [kdourp_inorder2], [16], [0], [146], [108], [], [], [], [], [] Stopping background process MMON Fri Jan 30 11:42:26 2026 Errors in file /u01/oracle/diag/rdbms/orcl/orcl/trace/orcl_smon_9198.trc (incident=159325): ORA-00600: internal error code, arguments: [kdourp_inorder2], [16], [0], [146], [108], [], [], [], [], [] Incident details in: /u01/oracle/diag/rdbms/orcl/orcl/incident/incdir_159325/orcl_smon_9198_i159325.trc Starting background process MMON Fri Jan 30 11:42:27 2026 MMON started with pid=49, OS id=10684 Starting background process MMNL Use ADRCI or Support Workbench to package the incident. See Note 411.1 at My Oracle Support for error and packaging details. Block recovery from logseq 2, block 39 to scn 49708988852 Recovery of Online Redo Log: Thread 1 Group 2 Seq 2 Reading mem 0 Mem# 0: /u01/oracle/oradata/orcl/redo02.log Block recovery completed at rba 2.42.16, scn 11.2464348597 ORACLE Instance orcl (pid = 14) - Error 600 encountered while recovering transaction (14, 8) on object 14. Errors in file /u01/oracle/diag/rdbms/orcl/orcl/trace/orcl_smon_9198.trc: ORA-00600: internal error code, arguments: [kdourp_inorder2], [16], [0], [146], [108], [], [], [], [], []
该报错比较明显是由于undo回滚段异常导致,通过屏蔽回滚段,open库成功.后续对客户truncate的表进行分析,比较悲催由于没有第一时间保护现场而且对所在表空间进行了大量写入操作,导致truncate数据恢复较少.
