联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
一个朋友一个历史库,由于某种原因无法正常启动,尝试强制打开库报ORA-600 2662错误
[oracle@db01 check_db]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Fri Oct 10 22:08:31 2025 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to an idle instance. SQL> startup mount pfile='/tmp/pfile' ORACLE instance started. Total System Global Area 2.0176E+10 bytes Fixed Size 2261928 bytes Variable Size 2818575448 bytes Database Buffers 1.7314E+10 bytes Redo Buffers 41463808 bytes Database mounted. SQL> alter database open resetlogs; alter database open resetlogs * ERROR at line 1: ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00704: bootstrap process failure ORA-00704: bootstrap process failure ORA-00600: internal error code, arguments: [2662], [4293], [1546030629], [4293], [1646742297], [4194545], [], [], [], [], [], [] Process ID: 12499 Session ID: 66 Serial number: 3
对应的alert日志报错如下
Fri Oct 10 22:08:41 2025 ALTER DATABASE MOUNT Set as converted control file due to db_unique_name mismatch Changing di2dbun from to xff Successful mount of redo thread 1, with mount id 92634729 Database mounted in Exclusive Mode Lost write protection disabled Completed: ALTER DATABASE MOUNT Fri Oct 10 22:08:58 2025 alter database open resetlogs RESETLOGS after complete recovery through change 18439840632350 Clearing online redo logfile 1 /u01/oradata/xff/redo01.log Clearing online log 1 of thread 1 sequence number 0 Clearing online redo logfile 1 complete Resetting resetlogs activation ID 90952602 (0x56bd39a) Online log /u01/oradata/xff/redo01.log: Thread 1 Group 1 was previously cleared Online log /u01/oradata/xff/redo02.log: Thread 1 Group 2 was previously cleared Online log /u01/oradata/xff/redo03.log: Thread 1 Group 3 was previously cleared Online log /u01/oradata/xff/redo04.log: Thread 1 Group 4 was previously cleared Online log /u01/oradata/xff/redo05.log: Thread 1 Group 5 was previously cleared Online log /u01/oradata/xff/redo06.log: Thread 1 Group 6 was previously cleared Online log /u01/oradata/xff/redo07.log: Thread 1 Group 7 was previously cleared Online log /u01/oradata/xff/redo08.log: Thread 1 Group 8 was previously cleared Fri Oct 10 22:08:59 2025 Setting recovery target incarnation to 2 Initializing SCN for created control file Database SCN compatibility initialized to 3 Warning - High Database SCN: Current SCN value is 18439840632353, threshold SCN value is 0 If you have not previously reported this warning on this database, please notify Oracle Support so that additional diagnosis can be performed. Fri Oct 10 22:08:59 2025 Assigning activation ID 92634729 (0x5857e69) Thread 1 opened at log sequence 1 Current log# 1 seq# 1 mem# 0: /u01/oradata/xff/redo01.log Successful open of redo thread 1 MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set Fri Oct 10 22:08:59 2025 SMON: enabling cache recovery Errors in file /u01/app/oracle/diag/rdbms/xff/xff/trace/xff_ora_12499.trc (incident=4961): ORA-00600: internal error code, arguments: [2662], [4293], [1546030629], [4293], [1646742297],[4194545] Incident details in: /u01/app/oracle/diag/rdbms/xff/xff/incident/incdir_4961/xff_ora_12499_i4961.trc 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/app/oracle/diag/rdbms/xff/xff/trace/xff_ora_12499.trc: ORA-00704: bootstrap process failure ORA-00704: bootstrap process failure ORA-00600: internal error code, arguments: [2662], [4293], [1546030629], [4293],[1646742297],[4194545] Errors in file /u01/app/oracle/diag/rdbms/xff/xff/trace/xff_ora_12499.trc: ORA-00704: bootstrap process failure ORA-00704: bootstrap process failure ORA-00600: internal error code, arguments: [2662], [4293], [1546030629], [4293],[1646742297],[4194545] Error 704 happened during db open, shutting down database USER (ospid: 12499): terminating the instance due to error 704 Instance terminated by USER, pid = 12499 ORA-1092 signalled during: alter database open resetlogs... opiodr aborting process unknown ospid (12499) as a result of ORA-1092
这个错误算是在oracle 12c之前比较经典的一个错误,一般是由于文件头的SCN小于数据库在启动/运行过程中block的SCN,从而出现该问题,解决该问题的方法一般就是把文件头的SCN修改为更大值即可,对于这种情况,可以通过Patch_SCN小工具进行修改(Patch SCN一键解决ORA-600 2662故障),也可以反向找出来报错的block,把其SCN修改为更小的值,以前写过类似的文章:https://www.xifenfei.com/2011/12/%e4%bd%bf%e7%94%a8bbed%e8%a7%a3%e5%86%b3ora-006002662.html
通过调整之后,数据库正常打开
SQL> recover database; Media recovery complete. SQL> alter database open ; Database altered. SQL> select open_mode from v$database; OPEN_MODE -------------------- READ WRITE SQL> select file#,status from v$datafile; FILE# STATUS ---------- ------- 1 SYSTEM 2 ONLINE 3 ONLINE 4 ONLINE 5 ONLINE 6 ONLINE 7 ONLINE 8 ONLINE 9 ONLINE 10 ONLINE 11 ONLINE 11 rows selected.
检测字典没有问题
SQL> @hcheck HCheck Version 07MAY18 on 10-OCT-2025 22:31:36 ---------------------------------------------- Catalog Version 11.2.0.4.0 (1102000400) db_name: XFF Catalog Fixed Procedure Name Version Vs Release Timestamp Result ------------------------------ ... ---------- -- ---------- -------------- ------ .- LobNotInObj ... 1102000400 <= *All Rel* 10/10 22:31:36 PASS .- MissingOIDOnObjCol ... 1102000400 <= *All Rel* 10/10 22:31:36 PASS .- SourceNotInObj ... 1102000400 <= *All Rel* 10/10 22:31:36 PASS .- OversizedFiles ... 1102000400 <= *All Rel* 10/10 22:31:36 PASS .- PoorDefaultStorage ... 1102000400 <= *All Rel* 10/10 22:31:36 PASS .- PoorStorage ... 1102000400 <= *All Rel* 10/10 22:31:36 PASS .- TabPartCountMismatch ... 1102000400 <= *All Rel* 10/10 22:31:36 PASS .- OrphanedTabComPart ... 1102000400 <= *All Rel* 10/10 22:31:36 PASS .- MissingSum$ ... 1102000400 <= *All Rel* 10/10 22:31:36 PASS .- MissingDir$ ... 1102000400 <= *All Rel* 10/10 22:31:36 PASS .- DuplicateDataobj ... 1102000400 <= *All Rel* 10/10 22:31:36 PASS .- ObjSynMissing ... 1102000400 <= *All Rel* 10/10 22:31:36 PASS .- ObjSeqMissing ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- OrphanedUndo ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- OrphanedIndex ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- OrphanedIndexPartition ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- OrphanedIndexSubPartition ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- OrphanedTable ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- OrphanedTablePartition ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- OrphanedTableSubPartition ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- MissingPartCol ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- OrphanedSeg$ ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- OrphanedIndPartObj# ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- DuplicateBlockUse ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- FetUet ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- Uet0Check ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- SeglessUET ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- BadInd$ ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- BadTab$ ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- BadIcolDepCnt ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- ObjIndDobj ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- TrgAfterUpgrade ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- ObjType0 ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- BadOwner ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- StmtAuditOnCommit ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- BadPublicObjects ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- BadSegFreelist ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- BadDepends ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- CheckDual ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- ObjectNames ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- BadCboHiLo ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- ChkIotTs ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- NoSegmentIndex ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- BadNextObject ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- DroppedROTS ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- FilBlkZero ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- DbmsSchemaCopy ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- OrphanedObjError ... 1102000400 > 1102000000 10/10 22:31:37 PASS .- ObjNotLob ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- MaxControlfSeq ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- SegNotInDeferredStg ... 1102000400 > 1102000000 10/10 22:31:37 PASS .- SystemNotRfile1 ... 1102000400 > 902000000 10/10 22:31:37 PASS .- DictOwnNonDefaultSYSTEM ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- OrphanTrigger ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS .- ObjNotTrigger ... 1102000400 <= *All Rel* 10/10 22:31:37 PASS --------------------------------------- 10-OCT-2025 22:31:37 Elapsed: 1 secs --------------------------------------- Found 0 potential problem(s) and 0 warning(s) PL/SQL procedure successfully completed. Statement processed. Complete output is in trace file: /u01/app/oracle/diag/rdbms/xff/xff/trace/xff_ora_8794_HCHECK.trc SQL>