联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
有一个客户反馈服务器异常断电,导致数据库无法正常启动(启动报ORA-01207: file is more recent than control file – old control file 错误)
SQL> startup mount ORACLE 例程已经启动。 Total System Global Area 5.4784E+10 bytes Fixed Size 2188768 bytes Variable Size 4.2010E+10 bytes Database Buffers 1.2751E+10 bytes Redo Buffers 20566016 bytes 数据库装载完毕。 SQL> recover database ORA-00283: recovery session canceled due to errors ORA-01122: database file 6 failed verification check ORA-01110: data file 6: 'D:\APP\ADMINISTRATOR\ORADATA\HIS\HSHIS1' ORA-01207: file is more recent than control file - old control file
怀疑文件系统或者底层磁盘有损坏,进一步检查系统日志,确认发现大量ntfs层面异常提示(而且多个盘都有)

对于这样的情况,先对数据文件进行了备份,运气还不错,文件全部备份成功,并通过Oracle Database Recovery Check 脚本进行检查当前故障库状态,确认很多文件的checkpoint点相差很远

对于这样的一个非归档数据库,肯定无法正常打开,只能通过屏蔽一致性尝试强制打开库,结果在打开过程中出现ORA-600 4194错误
SQL> alter database open ; alter database open * 第 1 行出现错误: ORA-00603: ORACLE server session terminated by fatal error ORA-00600: internal error code, arguments: [4194], [], [], [], [], [], [], [], [], [], [], [] ORA-00600: internal error code, arguments: [4194], [], [], [], [], [], [], [], [], [], [], [] ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00600: internal error code, arguments: [4194], [], [], [], [], [], [], [], [], [], [], [] ORA-00600: internal error code, arguments: [4194], [], [], [], [], [], [], [], [], [], [], [] ORA-00600: internal error code, arguments: [4194], [], [], [], [], [], [], [], [], [], [], [] ORA-00600: internal error code, arguments: [4194], [], [], [], [], [], [], [], [], [], [], [] 进程 ID: 7820 会话 ID: 177 序列号: 147
解决异常undo,数据库正常open成功,但是在数据库导出数据过程中报ORA-600 2662和ORA-600 2663错误(这种情况一般比较少见,大部分ORA-600 2662/2663都是在open过程中,这种库已经open成功,后续查询报该错误的比较少见,但是原理上有可能[启动的时候没有读到这些block,后面放到这些表的block scn大于文件头scn,所以报该错误])
Fri Sep 05 01:04:12 2025 QMNC started with pid=54, OS id=7708 Completed: alter database open Fri Sep 05 01:04:13 2025 Errors in file d:\app\administrator\diag\rdbms\his\his\trace\his_m001_8624.trc (incident=10058): ORA-00600: internal error code, arguments: [2662], [2], [1384717872], [2], [1385084764], [41943042], Incident details in: d:\app\administrator\diag\rdbms\his\his\incident\incdir_10058\his_m001_8624_i10058.trc Fri Sep 05 01:04:13 2025 Starting background process CJQ0 Fri Sep 05 01:04:13 2025 CJQ0 started with pid=62, OS id=6852 Fri Sep 05 01:04:13 2025 db_recovery_file_dest_size of 3912 MB is 0.00% used. This is a user-specified limit on the amount of space that will be used by this database for recovery-related files, and does not reflect the amount of space available in the underlying filesystem or ASM diskgroup. Errors in file d:\app\administrator\diag\rdbms\his\his\trace\his_ora_9220.trc (incident=10084): ORA-00600: 内部错误代码, 参数: [2662], [2], [1384717989], [2], [1385446402], [37802453], [], [], [], Fri Sep 05 01:04:18 2025 Errors in file d:\app\administrator\diag\rdbms\his\his\trace\his_j017_11248.trc (incident=10059): ORA-00600: internal error code, arguments: [2662], [2], [1384717990], [2], [1385446402], [37802453], Errors in file d:\app\administrator\diag\rdbms\his\his\trace\his_j017_11248.trc: ORA-00600: internal error code, arguments: [2662], [2], [1384717990], [2], [1385446402], [37802453], ORA-06512: at "HOSPITAL.RPT_CASE", line 5684 ORA-06512: at line 3 Errors in file d:\app\administrator\diag\rdbms\his\his\trace\his_ora_9220.trc (incident=10085): ORA-00600: 内部错误代码, 参数: [2662], [2], [1384717990], [2], [1385446402], [37802453], [], [], [],
这个问题相对比较简单,通过Patch SCN小工具修改正确的Oracle SCN即可