联系:手机/微信(+86 17813235971) QQ(107644445)
标题:创建控制文件遭遇ORA-00600[3753]故障解决
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
一位网友的数据库正常关闭,然后控制文件意外丢失,需要通过trace中的信息重建控制文件,但是在重建的过程中,出现ORA-00600[3753]错误,远程帮忙处理,记录处理过程如下
1.启动数据库至nomount状态,然后尝试noresetlogs模式重建控制文件
SQL>@XFF_NORESETLOGS_CTL.sql CREATE CONTROLFILE REUSE DATABASE "ORA10G" NORESETLOGS ARCHIVELOG * 第 1 行出现错误: ORA-01503: CREATE CONTROLFILE 失败 ORA-00600: 内部错误代码, 参数: [3753], [3], [2], [], [], [], [], []
2.检查alert日志
Tue Aug 07 20:40:47 2012 WARNING: Default Temporary Tablespace not specified in CREATE DATABASE command Default Temporary Tablespace will be necessary for a locally managed database in future release Tue Aug 07 20:40:48 2012 Errors in file d:\oracle\product\10.2.0\db_1\admin\ora10g\udump\ora10g_ora_11596.trc: ORA-00600: 内部错误代码, 参数: [3753], [3], [2], [], [], [], [], [] Tue Aug 07 20:40:53 2012 Errors in file d:\oracle\product\10.2.0\db_1\admin\ora10g\udump\ora10g_ora_11596.trc: ORA-00600: 内部错误代码, 参数: [3753], [3], [2], [], [], [], [], [] ORA-1503 signalled during: CREATE CONTROLFILE REUSE DATABASE "ORA10G" NORESETLOGS ARCHIVELOG
3.分析trace文件
Tue Aug 07 20:40:48 2012 ORACLE V10.2.0.1.0 - Production vsnsta=0 vsnsql=14 vsnxtr=3 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options Windows NT Version V6.1 Service Pack 1 CPU : 2 - type 586, 2 Physical Cores Process Affinity : 0x00000000 Memory (Avail/Total): Ph:166M/1901M, Ph+PgF:619M/5536M, VA:812M/2047M Instance name: ora10g Redo thread mounted by this instance: 0 <none> Oracle process number: 16 Windows thread id: 11596, image: ORACLE.EXE (SHAD) *** SERVICE NAME:() 2012-08-07 20:40:48.413 *** SESSION ID:(158.7) 2012-08-07 20:40:48.413 *** 2012-08-07 20:40:48.413 ksedmp: internal or fatal error ORA-00600: 内部错误代码, 参数: [3753], [3], [2], [], [], [], [], [] Current SQL statement for this session: CREATE CONTROLFILE REUSE DATABASE "ORA10G" NORESETLOGS ARCHIVELOG ………… ----- Call Stack Trace ----- calling call entry argument values in hex location type point (? means dubious value) -------------------- -------- -------------------- ---------------------------- _ksedst+38 CALLrel _ksedst1+0 0 1 _ksedmp+898 CALLrel _ksedst+0 0 _ksfdmp+14 CALLrel _ksedmp+0 3 603A816A CALLreg 00000000 87CF110 3 603A83FF CALLrel 603A80D8 87CF110 8191090 EA9 2 8CCC438 _ksesic2+59 CALLrel _kgesiv+0 87CF110 8191090 EA9 2 8CCC438 EA9 2 8CCC438 __VInfreq__kctbce+1 CALLrel _ksesic2+0 EA9 0 3 0 0 2 0 63 _kcfccfl+356 CALLrel _kctbce+0 543414C 81DB8A8 _cdbdrv+1037 CALLrel _kcfccfl+0 543414C 1 8CCD060 8CCD04C 19000 3 _opiexe+11999 CALLrel _cdbdrv+0 1 _opiosq0+6088 CALLrel _opiexe+0 4 0 8CCD894 _kpooprx+232 CALLrel _opiosq0+0 3 E 8CCD9AC A4 _kpoal8+775 CALLrel _kpooprx+0 8CCF6CC 8196414 A16 1 0 A4 _opiodr+1099 CALLreg 00000000 5E 17 8CCF6C8 60FEFF8D CALLreg 00000000 5E 17 8CCF6C8 0 _opitsk+1017 CALL??? 00000000 _opiino+1087 CALLrel _opitsk+0 0 0 _opiodr+1099 CALLreg 00000000 3C 4 8CCFC60 _opidrv+819 CALLrel _opiodr+0 3C 4 8CCFC60 0 _sou2o+45 CALLrel _opidrv+0 3C 4 8CCFC60 _opimai_real+112 CALLrel _sou2o+0 8CCFC54 3C 4 8CCFC60 _opimai+92 CALLrel _opimai_real+0 2 8CCFC8C _OracleThreadStart@ CALLrel _opimai+0 4+708 __pRawDllMain+10931 CALLptr 00000000 2903 __pRawDllMain+12925 CALLreg 00000000 4809 __pRawDllMain+12925 CALLrel __pRawDllMain+12925 4761 4772 --------------------- Binary Stack Dump --------------------- ---------------------------------------- SO: 4FB3DF5C, type: 4, owner: 4FA4CBFC, flag: INIT/-/-/0x00 (session) sid: 158 trans: 4EBB8954, creator: 4FA4CBFC, flag: (41) USR/- BSY/-/-/-/-/- DID: 0000-0010-0000000A, short-term DID: 0000-0000-00000000 txn branch: 00000000 oct: 0, prv: 0, sql: 00000000, psql: 4F707298, user: 0/SYS O/S info: user: superv06-PC\superv06, term: SUPERV06-PC, ospid: 7788:11636, machine: WORKGROUP\SUPERV06-PC program: sqlplus.exe application name: sqlplus.exe, hash value=0 last wait for 'log file sequential read' blocking sess=0x00000000 seq=31 wait_time=159 seconds since wait started=0 log#=0, block#=1, blocks=1 Dumping Session Wait History for 'log file sequential read' count=1 wait_time=159 log#=0, block#=1, blocks=1 for 'log file sequential read' count=1 wait_time=502 log#=0, block#=1, blocks=1 for 'log file sequential read' count=1 wait_time=163 log#=0, block#=1, blocks=1 for 'db file sequential read' count=1 wait_time=18840 file#=ffffffff, block#=1, blocks=1 for 'db file sequential read' count=1 wait_time=254 file#=ffffffff, block#=1, blocks=1 for 'db file sequential read' count=1 wait_time=7654 file#=ffffffff, block#=1, blocks=1 for 'db file sequential read' count=1 wait_time=150 file#=ffffffff, block#=1, blocks=1 for 'db file sequential read' count=1 wait_time=102 file#=ffffffff, block#=1, blocks=1 for 'db file sequential read' count=1 wait_time=123 file#=ffffffff, block#=1, blocks=1 for 'db file sequential read' count=1 wait_time=14010 file#=ffffffff, block#=1, blocks=1
通过这里我们发现创建控制文件的进程在读取redo log的时候出现了等待比较多而且时间比较长,而对于ORA-00600[3753]错误互联网上没有任何更多的信息.通过对于创建控制文件时候因为使用noresetlogs的分析:这种模式下需要读取redo log,所以导致等待较多,从而出现ORA-00600[3753]错误使得创建控制文件失败.因为本库是shutdown immediate关闭,所以我们完全可以通过resetlogs模式来创建控制文件,从而避免读取redo log.
4.创建resetlogs控制文件
SQL>@XFF_RESETLOGS_CTL.sql Control file created.
5.然后不完全恢复使用resetlogs open数据库
这次的处理我也没有什么经验可以借鉴,MOS和互联网上没有该错误的任何信息,解决这个问题关键凭的是自己对于noresetlogs和resetlogs的理解.对于数据库原理的理解,对解决一些陌生问题帮助很大;在学习ORACLE过程中注重对原理的理解和消化