ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [1498], [18713], [18720]

现象

数据库服务器出现ORA-00600[kcratr_nab_less_than_odr],不能open数据库

分析

1
2
3
4
SQL>ALTERDATABASEOPEN;
ALTERDATABASEOPEN
*第1行出现错误:
ORA-00600:内部错误代码,参数:[kcratr_nab_less_than_odr],[1],[99189],[43531],[43569],[],[],[],[],[],[],[]

查看alert日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
WedJan1113:56:162012
ALTERDATABASEOPEN
Beginningcrashrecoveryof1threads
parallelrecoverystartedwith2processes
Startedredoscan
Completedredoscan
read54591KBredo,0datablocksneedrecovery
Errorsinfiled:\dbdms\diag\rdbms\dbdms\dbdms\trace\dbdms_ora_3108.trc(incident=818557):
ORA-00600:内部错误代码,参数:[kcratr_nab_less_than_odr],[1],[99189],[43531],[43569],[],[],[],[],[],[],[]
Incidentdetailsin:d:\dbdms\diag\rdbms\dbdms\dbdms\incident\incdir_818557\dbdms_ora_3936_i818557.trc
Abortingcrashrecoveryduetoerror600
Errorsinfiled:\dbdms\diag\rdbms\dbdms\dbdms\trace\dbdms_ora_3108.trc:
ORA-00600:内部错误代码,参数:[kcratr_nab_less_than_odr],[1],[99189],[43531],[43569],[],[],[],[],[],[],[]
Errorsinfiled:\dbdms\diag\rdbms\dbdms\dbdms\trace\dbdms_ora_3108.trc:
ORA-00600:内部错误代码,参数:[kcratr_nab_less_than_odr],[1],[99189],[43531],[43569],[],[],[],[],[],[],[]
ORA-600signalledduring:ALTERDATABASEOPEN...
Tracedumpingisperformingid=[cdmp_20120110214555]

 

查看trace文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Tracefiled:\dbdms\diag\rdbms\dbdms\dbdms\trace\dbdms_ora_3108.trc
OracleDatabase11gEnterpriseEditionRelease11.2.0.1.0-64bitProduction
WiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions
WindowsNTVersionV6.1ServicePack1
CPU:2-type8664,2PhysicalCores
ProcessAffinity:0x0x0000000000000000
Memory(Avail/Total):Ph:2250M/4060M,Ph+PgF:5868M/8119M
Instancename:dbdms
Redothreadmountedbythisinstance:1
Oracleprocessnumber:17
Windowsthreadid:3108,image:ORACLE.EXE(SHAD)
…………………………
WARNING!Crashrecoveryofthread1seq99189is
endingatredoblock43531butshouldnothaveendedbefore
redoblock43569
Incident826550created,dumpfile:d:\dbdms\diag\rdbms\dbdms\dbdms\incident\incdir_826550\dbdms_ora_3108_i826550.trc
ORA-00600:??????,??:[kcratr_nab_less_than_odr],[1],[99189],[43531],[43569],[],[],[],[],[],[],[]
ORA-00600:??????,??:[kcratr_nab_less_than_odr],[1],[99189],[43531],[43569],[],[],[],[],[],[],[]
ORA-00600:??????,??:[kcratr_nab_less_than_odr],[1],[99189],[43531],[43569],[],[],[],[],[],[],[]
通过alert和trace中的内容可以知道,数据库需要恢复到rba到43569,但是因为某种原因实例恢复的时候,只能利用1thread99189seq#,恢复rba到43531。从而导致数据库无法正常open
ThisProblemiscausedbyStorageProblemoftheDatabaseFiles.
TheSubsystem(eg.SAN)crashedwhiletheDatabasewasopen.
TheDatabasethencrashedsincetheDatabaseFileswerenotaccessibleanymore.
ThiscausedalostWriteintotheOnlineRedoLogsandsoInstanceRecoveryisnotp
    ossibleandraisingtheORA-600.

解决方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
SQL>SELECTSTATUSFROMV$INSTANCE;
STATUS
------------
MOUNTED
--尝试直接recoverdatabase
SQL>RECOVERDATABASE;
ORA-00283:恢复会话因错误而取消
ORA-00264:不要求恢复
--提示不用恢复
--再打开数据库,还是kcratr_nab_less_than_odr错误警告
SQL>ALTERDATABASEOPEN;
ALTERDATABASEOPEN
*
第1行出现错误:
ORA-00600:内部错误代码,参数:[kcratr_nab_less_than_odr],[1],[99189],[43531],[43569],[],[],[],[],[],[],[]
--尝试不完全恢复
SQL>RECOVERDATABASEUNTILCANCEL;
ORA-10879:errorsignaledinparallelrecoveryslave
ORA-01547:警告:RECOVER成功但OPENRESETLOGS将出现如下错误
ORA-01152:文件1没有从过旧的备份中还原
ORA-01110:数据文件1:'D:\DBDMS\DATA\SYSTEM01.DBF'
--重建控制文件
SQL>ALTERDATABASEBACKUPCONTROLFILETOTRACEAS'D:/1.TXT';
数据库已更改。
SQL>SHUTDOWNIMMEDIATE;
ORA-01109:数据库未打开
已经卸载数据库。
ORACLE例程已经关闭。
SQL>STARTUPNOMOUNT;
ORACLE例程已经启动。
TotalSystemGlobalArea417546240bytes
FixedSize2176328bytes
VariableSize268438200bytes
DatabaseBuffers138412032bytes
RedoBuffers8519680bytes
SQL>
createcontrolfilereusedatabase'AFC010C1'noresetlogsnoarchivelog
maxlogfiles16
maxlogmembers4
maxdatafiles100
maxinstances8
maxloghistory18688
logfile
group1('/oracle/redo1/AFC010C1/redo01a.log','/oracle/redo2/AFC010C1/redo01b.log')size50Mblocksize512,
group2('/oracle/redo1/AFC010C1/redo02a.log','/oracle/redo2/AFC010C1/redo02b.log')size50Mblocksize512,
group3('/oracle/redo1/AFC010C1/redo03a.log','/oracle/redo2/AFC010C1/redo03b.log')size50Mblocksize512,
group4('/oracle/redo1/AFC010C1/redo04a.log','/oracle/redo2/AFC010C1/redo04b.log')size50Mblocksize512
DATAFILE
'/oracle/data1/AFC010C1/AFC_BIZ_DATA01.dbf',
'/oracle/data1/AFC010C1/AFC_LOG_DATA01.dbf',
'/oracle/data1/AFC010C1/AFC_TXN_DATA01.dbf',
'/oracle/data1/AFC010C1/AFC_CD_DATA01.dbf',
'/oracle/data1/AFC010C1/AFC_RPT_DATA01.dbf',
'/oracle/data1/AFC010C1/AFC_WS_DATA01.dbf',
'/oracle/data1/AFC010C1/sysaux01.dbf',
'/oracle/data1/AFC010C1/AFC_EOD_DATA01.dbf',
'/oracle/data1/AFC010C1/AFC_SYSCD_DATA01.dbf',
'/oracle/data1/AFC010C1/DBMGR_DATA01.dbf',
'/oracle/data1/AFC010C1/system01.dbf',
'/oracle/data2/AFC010C1/AFC_BIZ_INDX01.dbf',
'/oracle/data2/AFC010C1/AFC_CD_INDX01.dbf',
'/oracle/data2/AFC010C1/AFC_EOD_INDX01.dbf',
'/oracle/data2/AFC010C1/AFC_LOG_INDX01.dbf',
'/oracle/data2/AFC010C1/AFC_RPT_INDX01.dbf',
'/oracle/data2/AFC010C1/AFC_SYSCD_INDX01.dbf',
'/oracle/data2/AFC010C1/AFC_TXN_INDX01.dbf',
'/oracle/data2/AFC010C1/AFC_WS_INDX01.dbf',
'/oracle/data2/AFC010C1/DBMGR_INDX01.dbf',
'/oracle/data2/AFC010C1/undotbs01.dbf',
'/oracle/data2/AFC010C1/users01.dbf'
charactersetzhs16gbk;
控制文件已创建。
--继续尝试恢复
SQL>RECOVERDATABASE;
完成介质恢复。
SQL>ALTERDATABASEOPEN;
数据库已更改。
--open成功
在这次恢复中,主要就是重建控制文件,然后直接恢复成功,如果redo有损坏,那么可能需要使用不完全恢复,然后使用resetlogs打开数据库
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值