联系:手机/微信(+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过程中注重对原理的理解和消化