*作者介绍*****
原创作者:认真就输
联系电话:18081072613
微信、QQ:18081072613
转载就注明出处
1,故障现象
今天一个客户的数据库在启动时报ORA-00600 [kkdlcob-objn-exists], [37]错误,数据库不能打开,同时伴随着有ORA-00704的不错,请求紧急救援。
报错说明:
kkdlcob-objn-exists表示dataobj#已经存在。
37代表dataobj#的值。
如果在数据库启动阶段报错,同时伴随着有ORA-00704的错误,那么说明数据库在bootstrap阶段报错,也意识着在创建系统自带对象时报错。
报错的详细代码如下:
2,分析过程
2.1 查看trace文件
查看D:\APP\ADMINISTRATOR\diag\rdbms\orcl\orcl\incident\incdir_39811\orcl_ora_6864_i39811.trc文件内容
在日志文件中,可以看到如下的信息:
*** 2020-05-06 15:47:40.272
dbkedDefDump(): Starting incident default dumps (flags=0x2, level=3, mask=0x0)
----- Current SQL Statement for this session (sql_id=8urmvm9u914ww) -----
CREATE UNIQUE INDEX I_OBJ2 ON OBJ$(OWNER#,NAME,NAMESPACE,REMOTEOWNER,LINKNAME,SUBNAME,TYPE#,SPARE3,OBJ#) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 16K NEXT 104K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 OBJNO 37 EXTENTS (FILE 1 BLOCK 344))
----- Abridged Call Stack Trace -----
ksedsts()+585<-kjzdssdmp()+329<-kjzduptcctx()+288<-kjzdpcrshnfy()+77<-kstdmp()+364<-dbkedDefDump()+16515<-ksedmp()+43<-ksfdmp()+87<-dbgexPhaseII()+1819<-dbgexProcessError()+3008<-dbgeExecuteForError()+65<-dbgePostErrorKGE()+2269<-dbkePostKGE_kgsf()+77<-kgeadse()+349
<-kgerinv_internal()+76<-kgerinv()+49<-kgeasnmierr()+64<-kkdlcob()+2197<-kdicwpre()+2143<-kdicrws()+1062
此SQL语句就是出发ORA-00600 [kkdlcob-objn-exists], [37]报错的语句,通过关键字OBJNO 37也可以发现,也就是系统在启动时创建I_OBJ2时报错,系统中已经存储OBJNO 37的对象。
我们知道OBJNO 37是系统在启动过程中从bootstrap$表中读取出来的信息,并且这个表的内容是固定的。
所以我们猜测是有人故意修改bootstrap$内容导致的。
继续向下看日志内容:
继续分析trace,可以看到报错前访问的block,1/523属于bootstrap$
BH (0x00000009CFD3DAB0) file#: 1 rdba: 0x0040020b (1/523) class: 1 ba: 0x00000009CB5EC000
set: 37 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 0,0
dbwrid: 0 obj: 59 objn: 59 tsn: 0 afn: 1 hint: f
hash: [0x0000000AD19BF560,0x0000000AD19BF560] lru: [0x0000000B02416BB8,0x0000000B02416BB8]
ckptq: [NULL] fileq: [NULL] objq: [0x0000000ACECC2340,0x0000000ACECC2340] objaq: [0x0000000ACECC2330,0x0000000ACECC2330]
st: XCURRENT md: NULL fpin: 'kdswh11: kdst_fetch' tch: 1
flags: only_sequential_access
LRBA: [0x0.0.0] LSCN: [0x0.0] HSCN: [0xffff.ffffffff] HSUB: [65535]
buffer tsn: 0 rdba: 0x0040020b (1/523)
scn: 0x0000.01565fa3 seq: 0x01 flg: 0x06 tail: 0x5fa30601
frmt: 0x02 chkval: 0x0ea2 type: 0x06=trans data
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x00000009CB5EC000 to 0x00000009CB5EE000
9CB5EC000 0000A206 0040020B 01565FA3 06010000 [......@.._V.....]
9CB5EC010 00000EA2 00000001 0000003B 01565FA2 [........;...._V.]
9CB5EC020 00000000 00030001 00000000 001D000A [................]
9CB5EC030 0001D51A 00C00241 0014616B 00002002 [....A...ka... ..]
9CB5EC040 01565FA3 000F0100 0030FFFF 0DC40AAD [._V.......0.....]
9CB5EC050 00000DC4 1D30000F 1B481C56 19AB1A82 [......0.V.H.....]
9CB5EC060 17C1189C 0AAD16F8 112012EA 0F891051 [.......... .Q...]
9CB5EC070 0DF50EC0 00000000 00000000 00000000 [................]
9CB5EC080 00000000 00000000 00000000 00000000 [................]
Repeat 166 times
9CB5ECAF0 03012C00 0205C102 3CFE05C1 45524303 [.,.........<.CRE]
9CB5ECB00 20455441 4C424154 41542045 22282442 [ATE TABLE TAB$("]
9CB5ECB10 234A424F 554E2022 5245424D 544F4E20 [OBJ#" NUMBER NOT]
9CB5ECB20 4C554E20 44222C4C 4F415441 22234A42 [ NULL,"DATAOBJ#"]
9CB5ECB30 4D554E20 2C524542 23535422 554E2022 [ NUMBER,"TS#" NU]
9CB5ECB40 5245424D 544F4E20 4C554E20 46222C4C [MBER NOT NULL,"F]
9CB5ECB50 23454C49 554E2022 5245424D 544F4E20 [ILE#" NUMBER NOT]
9CB5ECB60 4C554E20 42222C4C 4B434F4C 4E202223 [ NULL,"BLOCK#" N]
9CB5ECB70 45424D55 4F4E2052 554E2054 222C4C4C [UMBER NOT NULL,"]
9CB5ECB80 4A424F42 4E202223 45424D55 54222C52 [BOBJ#" NUMBER,"T]
9CB5ECB90 22234241 4D554E20 2C524542 4C4F4322 [AB#" NUMBER,"COL]
9CB5ECBA0 4E202253 45424D55 4F4E2052 554E2054 [S" NUMBER NOT NU]
9CB5ECBB0 222C4C4C 43554C43 22534C4F 4D554E20 [LL,"CLUCOLS" NUM]
9CB5ECBC0 2C524542 54435022 45455246 4E202224 [BER,"PCTFREE$" N]
9CB5ECBD0 45424D55 4F4E2052 554E2054 222C4C4C [UMBER NOT NULL,"]
9CB5ECBE0 55544350 24444553 554E2022 5245424D [PCTUSED$" NUMBER]
9CB5ECBF0 544F4E20 4C554E20 49222C4C 5254494E [ NOT NULL,"INITR]
9CB5ECC00 22534E41 4D554E20 20524542 20544F4E [ANS" NUMBER NOT ]
9CB5ECC10 4C4C554E 414D222C 41525458 2022534E [NULL,"MAXTRANS" ]
9CB5ECC20 424D554E 4E205245 4E20544F 2C4C4C55 [NUMBER NOT NULL,]
9CB5ECC30 414C4622 20225347 424D554E 4E205245 ["FLAGS" NUMBER N]
9CB5ECC40 4E20544F 2C4C4C55 44554122 22245449 [OT NULL,"AUDIT$"]
9CB5ECC50 52415620 52414843 38332832 4F4E2029 [ VARCHAR2(38) NO]
9CB5ECC60 554E2054 222C4C4C 43574F52 2022544E [T NULL,"ROWCNT" ]
9CB5ECC70 424D554E 222C5245 434B4C42 2022544E [NUMBER,"BLKCNT" ]
9CB5ECC80 424D554E 222C5245 43504D45 2022544E [NUMBER,"EMPCNT" ]
9CB5ECC90 424D554E 222C5245 53475641 20224350 [NUMBER,"AVGSPC" ]
9CB5ECCA0 424D554E 222C5245 434E4843 2022544E [NUMBER,"CHNCNT" ]
9CB5ECCB0 424D554E 222C5245 52475641 20224E4C [NUMBER,"AVGRLN" ]
9CB5ECCC0 424D554E 222C5245 53475641 465F4350 [NUMBER,"AVGSPC_F]
9CB5ECCD0 2022424C 424D554E 222C5245 43424C46 [LB" NUMBER,"FLBC]
9CB5ECCE0 2022544E 424D554E 222C5245 4C414E41 [NT" NUMBER,"ANAL]
9CB5ECCF0 54455A59 22454D49 54414420 53222C45 [YZETIME" DATE,"S]
9CB5ECD00 4C504D41 5A495345 4E202245 45424D55 [AMPLESIZE" NUMBE]
9CB5ECD10 44222C52 45524745 4E202245 45424D55 [R,"DEGREE" NUMBE]
9CB5ECD20 49222C52 4154534E 5345434E 554E2022 [R,"INSTANCES" NU]
9CB5ECD30 5245424D 4E49222C 4C4F4354 4E202253 [MBER,"INTCOLS" N]
9CB5ECD40 45424D55 4F4E2052 554E2054 222C4C4C [UMBER NOT NULL,"]
9CB5ECD50 4E52454B 4F434C45 2022534C 424D554E [KERNELCOLS" NUMB]
9CB5ECD60 4E205245 4E20544F 2C4C4C55 4F525022 [ER NOT NULL,"PRO]
9CB5ECD70 54524550 4E202259 45424D55 4F4E2052 [PERTY" NUMBER NO]
9CB5ECD80 554E2054 222C4C4C 47495254 47414C46 [T NULL,"TRIGFLAG]
9CB5ECD90 554E2022 5245424D 5053222C 31455241 [" NUMBER,"SPARE1]
9CB5ECDA0 554E2022 5245424D 5053222C 32455241 [" NUMBER,"SPARE2]
9CB5ECDB0 554E2022 5245424D 5053222C 33455241 [" NUMBER,"SPARE3]
9CB5ECDC0 554E2022 5245424D 5053222C 34455241 [" NUMBER,"SPARE4]
9CB5ECDD0 41562022 41484352 31283252 29303030 [" VARCHAR2(1000)]
9CB5ECDE0 5053222C 35455241 41562022 41484352 [,"SPARE5" VARCHA]
9CB5ECDF0 31283252 29303030 5053222C 36455241 [R2(1000),"SPARE6]
9CB5ECE00 41442022 20294554 524F5453 20454741 [" DATE) STORAGE ]
9CB5ECE10 4F202028 4F4E4A42 20373320 4E424154 [( OBJNO 37 TABN] --标红
9CB5ECE20 2931204F 554C4320 52455453 4F5F4320 [O 1) CLUSTER C_O]
9CB5ECE30 28234A42 234A424F 03002C29 0239C102 [BJ#(OBJ#),....9.]
9CB5ECE40 43C139C1 54414552 4E492045 20584544 [.9.CREATE INDEX ]
9CB5ECE50 44435F49 20344645 43204E4F 24464544 [I_CDEF4 ON CDEF$]
9CB5ECE60 414E4528 44454C42 43502029 45524654 [(ENABLED) PCTFRE]
9CB5ECE70 30312045 494E4920 4E415254 20322053 [E 10 INITRANS 2 ]
9CB5ECE80 5458414D 534E4152 35353220 4F545320 [MAXTRANS 255 STO]
9CB5ECE90 45474152 20202820 54494E49 204C4149 [RAGE ( INITIAL ]
9CB5ECEA0 204B3436 5458454E 32303120 4D204B34 [64K NEXT 1024K M]
9CB5EDB40 20312053 4558414D 4E455458 32205354 [S 1 MAXEXTENTS 2]
9CB5EDB50 34373431 34363338 43502035 434E4954 [147483645 PCTINC]
9CB5EDB60 53414552 20302045 4E4A424F 3833204F [REASE 0 OBJNO 38]
9CB5EDB70 54584520 53544E45 49462820 3120454C [ EXTENTS (FILE 1]
9CB5EDB80 4F4C4220 33204B43 29293235 0203002C [ BLOCK 352)),...]
9CB5EDB90 C10226C1 0102FE26 41455243 55204554 [.&..&...CREATE U]
9CB5EDBA0 5551494E 4E492045 20584544 424F5F49 [NIQUE INDEX I_OB]
9CB5EDBB0 4F20324A 424F204E 4F28244A 52454E57 [J2 ON OBJ$(OWNER]
9CB5EDBC0 414E2C23 4E2C454D 53454D41 45434150 [#,NAME,NAMESPACE]
9CB5EDBD0 4D45522C 4F45544F 52454E57 4E494C2C [,REMOTEOWNER,LIN]
9CB5EDBE0 4D414E4B 55532C45 4D414E42 59542C45 [KNAME,SUBNAME,TY]
9CB5EDBF0 2C234550 52415053 4F2C3345 29234A42 [PE#,SPARE3,OBJ#)]
9CB5EDC00 54435020 45455246 20303120 54494E49 [ PCTFREE 10 INIT]
9CB5EDC10 534E4152 4D203220 52545841 20534E41 [RANS 2 MAXTRANS ]
9CB5EDC20 20353532 524F5453 20454741 49202028 [255 STORAGE ( I]
9CB5EDC30 4954494E 31204C41 4E204B36 20545845 [NITIAL 16K NEXT ]
9CB5EDC40 4B343031 4E494D20 45545845 2053544E [104K MINEXTENTS ]
9CB5EDC50 414D2031 54584558 53544E45 34313220 [1 MAXEXTENTS 214]
9CB5EDC60 33383437 20353436 49544350 4552434E [7483645 PCTINCRE]
9CB5EDC70 20455341 424F2030 204F4E4A 45203733 [ASE 0 OBJNO 37 E] --标红
9CB5EDC80 4E455458 28205354 454C4946 42203120 [XTENTS (FILE 1 B]
9CB5EDC90 4B434F4C 34343320 002C2929 25C10203 [LOCK 344)),....%]
9CB5EDCA0 D025C102 41455243 55204554 5551494E [..%.CREATE UNIQU]
9CB5EDCB0 4E492045 20584544 424F5F49 4F20314A [E INDEX I_OBJ1 O]
9CB5EDCC0 424F204E 4F28244A 2C234A42 454E574F [N OBJ$(OBJ#,OWNE]
9CB5EDCD0 542C2352 23455059 43502029 45524654 [R#,TYPE#) PCTFRE]
9CB5EDCE0 30312045 494E4920 4E415254 20322053 [E 10 INITRANS 2 ]
9CB5EDCF0 5458414D 534E4152 35353220 4F545320 [MAXTRANS 255 STO]
从trace中可以看到当I_OBJ2创建之前,tab$先被创建并且OBJ#正好是37。对bootstrap核心对象比较熟悉的朋友应该知道TAB$的obj#应该是4才对。
所以可有人估计修改bootstrap$导致的。
2.2 查看块的内容
通过块的dump信息,确认快的信息是被修改过。
Block header dump: 0x0040020b
Object id on Block? Y
seg/obj: 0x3b csc: 0x00.1565fa2 itc: 1 flg: O typ: 1 - DATA
fsl: 0 fnx: 0x0 ver: 0x01
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000a.01d.0001d51a 0x00c00241.616b.14 --U- 2 fsc 0x0000.01565fa3 --Lck为2,有2行记录曾经被修改
bdba: 0x0040020b
tab 0, row 8, @0xaad
tl: 840 fb: --H-FL-- lb: 0x1 cc: 3 --lb为1,说明该行被修改
col 0: [ 2] c1 05
col 1: [ 2] c1 05 --OBJ#=4
col 2: [828]
43 52 45 41 54 45 20 54 41 42 4c 45 20 54 41 42 24 28 22 4f 42 4a 23 22 20
4e 55 4d 42 45 52 20 4e 4f 54 20 4e 55 4c 4c 2c 22 44 41 54 41 4f 42 4a 23
22 20 4e 55 4d 42 45 52 2c 22 54 53 23 22 20 4e 55 4d 42 45 52 20 4e 4f 54
20 4e 55 4c 4c 2c 22 46 49 4c 45 23 22 20 4e 55 4d 42 45 52 20 4e 4f 54 20
4e 55 4c 4c 2c 22 42 4c 4f 43 4b 23 22 20 4e 55 4d 42 45 52 20 4e 4f 54 20
4e 55 4c 4c 2c 22 42 4f 42 4a 23 22 20 4e 55 4d 42 45 52 2c 22 54 41 42 23
22 20 4e 55 4d 42 45 52 2c 22 43 4f 4c 53 22 20 4e 55 4d 42 45 52 20 4e 4f
54 20 4e 55 4c 4c 2c 22 43 4c 55 43 4f 4c 53 22 20 4e 55 4d 42 45 52 2c 22
50 43 54 46 52 45 45 24 22 20 4e 55 4d 42 45 52 20 4e 4f 54 20 4e 55 4c 4c
2c 22 50 43 54 55 53 45 44 24 22 20 4e 55 4d 42 45 52 20 4e 4f 54 20 4e 55
4c 4c 2c 22 49 4e 49 54 52 41 4e 53 22 20 4e 55 4d 42 45 52 20 4e 4f 54 20
4e 55 4c 4c 2c 22 4d 41 58 54 52 41 4e 53 22 20 4e 55 4d 42 45 52 20 4e 4f
54 20 4e 55 4c 4c 2c 22 46 4c 41 47 53 22 20 4e 55 4d 42 45 52 20 4e 4f 54
20 4e 55 4c 4c 2c 22 41 55 44 49 54 24 22 20 56 41 52 43 48 41 52 32 28 33
38 29 20 4e 4f 54 20 4e 55 4c 4c 2c 22 52 4f 57 43 4e 54 22 20 4e 55 4d 42
45 52 2c 22 42 4c 4b 43 4e 54 22 20 4e 55 4d 42 45 52 2c 22 45 4d 50 43 4e
54 22 20 4e 55 4d 42 45 52 2c 22 41 56 47 53 50 43 22 20 4e 55 4d 42 45 52
2c 22 43 48 4e 43 4e 54 22 20 4e 55 4d 42 45 52 2c 22 41 56 47 52 4c 4e 22
20 4e 55 4d 42 45 52 2c 22 41 56 47 53 50 43 5f 46 4c 42 22 20 4e 55 4d 42
45 52 2c 22 46 4c 42 43 4e 54 22 20 4e 55 4d 42 45 52 2c 22 41 4e 41 4c 59
5a 45 54 49 4d 45 22 20 44 41 54 45 2c 22 53 41 4d 50 4c 45 53 49 5a 45 22
20 4e 55 4d 42 45 52 2c 22 44 45 47 52 45 45 22 20 4e 55 4d 42 45 52 2c 22
49 4e 53 54 41 4e 43 45 53 22 20 4e 55 4d 42 45 52 2c 22 49 4e 54 43 4f 4c
53 22 20 4e 55 4d 42 45 52 20 4e 4f 54 20 4e 55 4c 4c 2c 22 4b 45 52 4e 45
4c 43 4f 4c 53 22 20 4e 55 4d 42 45 52 20 4e 4f 54 20 4e 55 4c 4c 2c 22 50
52 4f 50 45 52 54 59 22 20 4e 55 4d 42 45 52 20 4e 4f 54 20 4e 55 4c 4c 2c
22 54 52 49 47 46 4c 41 47 22 20 4e 55 4d 42 45 52 2c 22 53 50 41 52 45 31
22 20 4e 55 4d 42 45 52 2c 22 53 50 41 52 45 32 22 20 4e 55 4d 42 45 52 2c
22 53 50 41 52 45 33 22 20 4e 55 4d 42 45 52 2c 22 53 50 41 52 45 34 22 20
56 41 52 43 48 41 52 32 28 31 30 30 30 29 2c 22 53 50 41 52 45 35 22 20 56
41 52 43 48 41 52 32 28 31 30 30 30 29 2c 22 53 50 41 52 45 36 22 20 44 41
54 45 29 20 53 54 4f 52 41 47 45 20 28 20 20 4f 42 4a 4e 4f 20 33 37 20 54
41 42 4e 4f 20 31 29 20 43 4c 55 53 54 45 52 20 43 5f 4f 42 4a 23 28 4f 42
4a 23 29
3,解决方案
知道bootstrap$被修改了,那么解决方案就非常简单了。
3.1 通过bbed直接修改块内容。
bbed修改的方法见:http://www.htz.pw/?p=846
3.2 找一个同版本的数据库,将bootstrap$复制过来就可以。
修改的方法见:http://www.htz.pw/?p=841