今天还在休假,群里的朋友提到遇到ora-600错误,感觉蛮有意思的,这里简单分享一下。
首先我们来看看错误。 ORA-00600: internal error code, arguments: [4143], [20.28.212006], [0], [0], [7], [5], [], [], [], [], [], []
从报错来看,是expdp的操作遇到的。
[TOC00004]
----- Current SQL Statement for this session (sql_id=4cdjmugqg000a) -----
SELECT NVL((SELECT /*+ FULL(T) NESTED_TABLE_GET_REFS NO_PARALLEL */ 1 FROM "BSHIP_BASE"."XXL_JOB_LOG_bak" T WHERE ROWNUM = 1), 0) FROM SYS.DUAL
[TOC00005]
----- PL/SQL Stack -----
----- PL/SQL Call Stack -----
object line object
handle number name
0x6168b700 9116 package body SYS.KUPW$WORKER.CHECK_FOR_ROW
0x6168b700 4167 package body SYS.KUPW$WORKER.UNLOAD_DATA
0x6168b700 13767 package body SYS.KUPW$WORKER.DISPATCH_WORK_ITEMS
0x6168b700 2429 package body SYS.KUPW$WORKER.MAIN
0x74c1f588 2 anonymous block
[TOC00005-END]
[TOC00004-END]
虽然这个对于Oracle ora-00600 错误而言,我们很常见。然而其实对于后面这个4143,老实说并不常见。
我们之前做数据恢复的时候,更常见的是4000/4137/4097/4193/4194等等。
我们知道对于ora-00600后第一位,4000 ~ 6000 都与Oracle undo有关。因此这里的[20.28.212006] 是什么意思呢?
看到这个错误,我猜测是Oracle XID。后面当训练营的兄弟把trace发出来,打开看了一眼,果然如此。
实际上trace文件中这里已经有所说明了:
----- Beginning of Customized Incident Dump(s) -----
Xid passed in = xid: 0x0014.01c.00033c26
这里将上述xid的3部分分别转成10进制:
0014 -> 20
01c -> 28
00033c26 -> 212006
这是不是就和前面的报错对上了?
同时从trace文件来看,最后报错的函数是:
Incident ID: 101717
Problem Key: ORA 600 [4143]
Error: ORA-600 [4143] [20.28.212006] [0] [0] [7] [5] [] [] [] [] [] []
[00]: dbgexExplicitEndInc [diag_dde]
[01]: dbgeEndDDEInvocationImpl [diag_dde]
[02]: ktundo []<-- Signaling
[03]: kturCurrBackoutOneChg []
[04]: kturRecoverTxnMain []
[05]: kturRecoverTxn []
[06]: kturRecoverUndoSegment []
[07]: ktcwit1 []
[08]: ktecgetsh [Space]
[09]: ktecgshx [Space]
[10]: kteinpscan_int [Space]
[11]: kteiniscan1 [Space]
[12]: kdselini [KDS]
[13]: kdsirsf [KDS]
[14]: kdsirs_fco [KDS]
[15]: qertbFetch [SQL_Execution]
[16]: qercoFetch [SQL_Execution]
[17]: subsr1 []
[18]: evaopn3 []
[19]: evaopn2 []
[20]: opifcr [OPI]
[21]: qerfiFetch [SQL_Execution]
[22]: opifch2 [OPI]
[23]: opiefn0 [OPI]
[24]: opipls [OPI]
[25]: opiodr [OPI]
[26]: rpidrus [RPI]
[27]: skgmstack []
[28]: rpidru [RPI]
[29]: rpiswu2 [RPI]
[30]: rpidrv [RPI]
[31]: psddr0 [PROGINT_PLSQL]
[32]: psdnal [PROGINT_PLSQL]
[33]: pevm_EXIM [PLSQL_Code_Execution]
[34]: pfrinstr_EXIM [PLSQL_Code_Execution]
[35]: pfrrun_no_tool [PLSQL_Code_Execution]
[36]: pfrrun [PLSQL_Code_Execution]
[37]: plsql_run [PLSQL_PSD_Standalones]
[38]: peicnt [PLSQL_Code_Execution]
[39]: kkxexe [PROGINT_PLSQL]
[40]: opiexe [Time_Limit]
[41]: kpoal8 [PROGINT_MISC]
[42]: opiodr [OPI]
[43]: kpoodr [PROGINT_MISC]
[44]: upirtrc []
[45]: kpurcsc [PROGINT]
[46]: kpuexec [PROGINT]
[47]: OCIStmtExecute []
[48]: kupprwp []
[49]: ksvrdp_int [ksv_trace]
MD [00]: 'SID'='575.53501' (0x2)
MD [01]: 'ProcId'='164.289' (0x2)
MD [02]: 'PQ'='(16777216, 1739343848)' (0x6)
MD [03]: 'Service'='SYS$USERS' (0x200)
MD [04]: 'Module'='Data Pump Worker' (0x200)
MD [05]: 'Action'='SYS_EXPORT_SCHEMA_02' (0x200)
很明显是在ktundo上,这和oracle undo block有关。
前面其实已经提到了xid的3个部分,第一部分其实就是usn编号,也就是回滚段标号,实际上要处理这个问题也很简单,drop这个20号回滚段即可。
同时分析trace文件发现其中有一段disk lock::locked by XID信息。老实说,我之前从未见过:
Extent Control Header
-----------------------------------------------------------------
Extent Header:: spare1: 0 spare2: 0 #extents: 308 #blocks: 33936
last map 0x01027c80 #maps: 1 offset: 2716
Highwater:: 0x01029238 ext#: 305 blk#: 184 ext size: 200
#blocks in seg. hdr's freelists: 0
#blocks below: 33179
mapblk 0x00000000 offset: 305
Disk Lock:: Locked by xid: 0x0014.01c.00033c26
--------------------------------------------------------
Low HighWater Mark :
Highwater:: 0x01029238 ext#: 305 blk#: 184 ext size: 200
#blocks in seg. hdr's freelists: 0
#blocks below: 33179
mapblk 0x00000000 offset: 305
Level 1 BMB for High HWM block: 0x01029a80
Level 1 BMB for Low HWM block: 0x01029a80
--------------------------------------------------------
Segment Type: 1 nl2: 1 blksz: 8192 fbsz: 0
L2 Array start offset: 0x00001434
First Level 3 BMB: 0x00000000
L2 Hint for inserts: 0x01003de1
Last Level 1 BMB: 0x01029a82
Last Level II BMB: 0x01003de1
Last Level III BMB: 0x00000000
Map Header:: next 0x01027c80 #extents: 307 obj#: 25383 flag: 0x10000000
这个locked XID也就是前面报错的XID。 接下来我们继续分析。搜索trace文件中的回滚段头dump可以看到,确实第1c号事务槽存在活跃事务,状态为10。其中对应的undo block地址是0x00c01148。
Extent Control Header
-----------------------------------------------------------------
Extent Header:: spare1: 0 spare2: 0 #extents: 3 #blocks: 143
last map 0x00000000 #maps: 0 offset: 4080
Highwater:: 0x00c01148 ext#: 2 blk#: 72 ext size: 128
#blocks in seg. hdr's freelists: 0
#blocks below: 0
mapblk 0x00000000 offset: 2
Unlocked
Map Header:: next 0x00000000 #extents: 3 obj#: 0 flag: 0x40000000
Extent Map
-----------------------------------------------------------------
0x00c00171 length: 7
0x00c084c0 length: 8
0x00c01100 length: 128
Retention Table
-----------------------------------------------------------
Extent Number:0 Commit Time: 1739037599
Extent Number:1 Commit Time: 1739037718
Extent Number:2 Commit Time: 0
TRN CTL:: seq: 0x225d chd: 0x000e ctl: 0x001d inc: 0x00000000 nfb: 0x0001
mgc: 0xb000 xts: 0x0068 flg: 0x0001 opt: 2147483646 (0x7ffffffe)
uba: 0x00c01148.225d.16 scn: 0x0000000040224300
Version: 0x01
FREE BLOCK POOL::
uba: 0x00c01144.225d.31 ext: 0x2 spc: 0xa10
uba: 0x00000000.225d.02 ext: 0x2 spc: 0x1bee
uba: 0x00000000.225d.2e ext: 0x2 spc: 0xb66
uba: 0x00000000.21c8.33 ext: 0x3 spc: 0x3c8
uba: 0x00000000.21c9.1e ext: 0x4 spc: 0x11d2
TRN TBL::
index state cflags wrap# uel scn dba parent-xid nub stmt_num cmt
------------------------------------------------------------------------------------------------
0x00 9 0x00 0x33a47 0x0014 0x0000000040224915 0x00c01147 0x0000.000.00000000 0x00000001 0x00000000 1739041199
......
0x1c 10 0x10 0x33c26 0x0002 0x000000004022d060 0x00c01148 0x0000.000.00000000 0x00000001 0x00000000 0
0x1d 9 0x00 0x33a8f 0xffff 0x0000000040229fcf 0x00c01148 0x0000.000.00000000 0x00000001 0x00000000 1739041204
0x1e 9 0x00 0x33ce4 0x0009 0x00000000402247f7 0x00c01147 0x0000.000.00000000 0x00000001 0x00000000 1739041199
0x1f 9 0x00 0x33884 0x001e 0x00000000402247e9 0x00c01147 0x0000.000.00000000 0x00000001 0x00000000 1739041199
0x20 9 0x00 0x33e84 0x0000 0x0000000040224854 0x00c01147 0x0000.000.00000000 0x00000001 0x00000000 1739041199
0x21 9 0x00 0x33c4f 0x0017 0x0000000040224581 0x00c01147 0x0000.000.00000000 0x00000001 0x00000000 1739041179
EXT TRN CTL::
既然如此,我们直接搜索:rdba: 0x00c01148 即可定位到该undo block的dump情况:
BH (0x181fad8b0) file#: 3 rdba: 0x00c01148 (3/4424) class: 56 ba: 0x181880000
set: 34 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 339,28
dbwrid: 1 obj: -1 objn: 0 tsn: [0/2] afn: 3 hint: f
hash: [0x8bd84880,0x8bd84880] lru: [0x181fadb00,0x181fad830]
ckptq: [NULL] fileq: [NULL]
objq: [0x7713b9b8,0x162f8df80] objaq: [0x7713b9a8,0x181fa90b0]
st: XCURRENT md: NULL fpin: 'ktuwh23: ktubko' fscn: 0x408cb0be tch: 215
flags:
LRBA: [0x0.0.0] LSCN: [0x0] HSCN: [0x0] HSUB: [65535]
Printing buffer operation history (latest change first):
cnt: 9
01. sid:06 L145:zib:mk:EXCL 02. sid:06 L212:zib:bic:FSQ
03. sid:06 L122:zgb:set:st 04. sid:06 L830:olq1:clr:WRT+CKT
05. sid:06 L951:zgb:lnk:objq 06. sid:06 L372:zgb:set:MEXCL
07. sid:06 L123:zgb:no:FEN 08. sid:06 L083:zgb:ent:fn
09. sid:03 L203:w_ini_dc:bic:FVB
buffer tsn: 2 rdba: 0x00c01148 (3/4424)
scn: 0x4022d060 seq: 0x01 flg: 0x04 tail: 0xd0600201
frmt: 0x02 chkval: 0xe04f type: 0x02=KTU UNDO BLOCK
Hex dump of block: st=0, typ_found=1
********************************************************************************
UNDO BLK:
xid: 0x0014.01c.00033c26 seq: 0x225d cnt: 0x16 irb: 0x16 icl: 0x0 flg: 0x0000
Rec Offset Rec Offset Rec Offset Rec Offset Rec Offset
---------------------------------------------------------------------------
0x01 0x1c58 0x02 0x1c04 0x03 0x1b7c 0x04 0x1af4 0x05 0x1a90
0x06 0x1a40 0x07 0x19dc 0x08 0x1978 0x09 0x18d8 0x0a 0x1850
0x0b 0x17ec 0x0c 0x1784 0x0d 0x1720 0x0e 0x16bc 0x0f 0x1634
0x10 0x15d0 0x11 0x1568 0x12 0x1504 0x13 0x14a0 0x14 0x1418
0x15 0x13ac 0x16 0x135c
*-----------------------------
* Rec #0x1 slt: 0x1a objn: 33400(0x00008278) objd: 33400 tblspc: 4(0x00000004)
* Layer: 10 (Index) opc: 21 rci 0x00
Undo type: Regular undo Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00c01146
*-----------------------------
index general undo (branch) operations
KTB Redo
op: 0x05 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: R itc: 35
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0014.00d.00033e85 0x00c01147.225d.01 C--- 0 scn 0x0000000040224572
0x02 0x0009.015.0007376a 0x00c00c63.49ec.02 C--- 0 scn 0x0000000040210412
0x03 0x000b.011.00094f9f 0x00c00883.579f.01 C--- 0 scn 0x000000004021a7bc
0x04 0x000a.006.00079f0f 0x00c025fd.4b80.16 C--- 0 scn 0x00000000401fd4f9
0x05 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
0x06 0x0009.014.00073315 0x00c01304.49e7.17 C--- 0 scn 0x00000000401fd50a
0x07 0x0015.021.0003064d 0x00c028c6.1f7e.2a C--- 0 scn 0x00000000401fd4eb
0x08 0x000b.014.00094f5d 0x00c0189b.5797.26 C--- 0 scn 0x00000000401fd510
0x09 0x000f.011.000f9600 0x00c00fda.73d1.41 C--- 0 scn 0x00000000401fd51c
0x0a 0x000b.013.00094fa9 0x00c0189b.5797.2d C--- 0 scn 0x00000000401fd51e
0x0b 0x000d.01e.000fecfa 0x00c016d0.7a01.2f C--- 0 scn 0x00000000401fd520
0x0c 0x0011.003.00061247 0x00c1250b.3931.36 C--- 0 scn 0x00000000401fd522
0x0d 0x000f.01a.000f9a0c 0x00c00fdb.73d1.06 C--- 0 scn 0x00000000401fd524
0x0e 0x0015.00f.00030957 0x00c028c6.1f7e.35 C--- 0 scn 0x00000000401fd544
0x0f 0x0009.006.000732b6 0x00c01304.49e7.1e C--- 0 scn 0x00000000401fd528
0x10 0x0005.016.00071a3b 0x00c026fa.486f.08 C--- 0 scn 0x00000000401fd52c
0x11 0x000d.014.000ff055 0x00c016d0.7a01.3a C--- 0 scn 0x00000000401fd547
0x12 0x0012.00d.0003cb4d 0x00c01fc6.2683.22 C--- 0 scn 0x00000000401fd54a
0x13 0x0003.007.0006d69e 0x00c01e47.42a7.30 C--- 0 scn 0x00000000401fd564
0x14 0x0006.01b.000732dc 0x00c005d7.46d0.29 C--- 0 scn 0x00000000401fd56f
0x15 0x0003.006.0006d697 0x00c01e47.42a7.37 C--- 0 scn 0x00000000401fd586
0x16 0x0011.00d.00060b23 0x00c1250b.3931.41 C--- 0 scn 0x00000000401fd659
0x17 0x0018.00c.00007988 0x00c01d04.069d.08 C--- 0 scn 0x00000000401fd662
0x18 0x0001.01d.0006c5b2 0x00c004a2.4184.04 C--- 0 scn 0x00000000401fd67b
0x19 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
0x1a 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
0x1b 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
0x1c 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
0x1d 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
0x1e 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
0x1f 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
0x20 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
0x21 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
0x22 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
0x23 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
Dump kdige : block dba :0x01000745, seghdr dba: 0x01011a62
make leaf block empty
(2): 01 00
......省略部分内容
*-----------------------------
* Rec #0x4 slt: 0x0c objn: 25383(0x00006327) objd: 25383 tblspc: 4(0x00000004)
* Layer: 11 (Row) opc: 1 rci 0x00
Undo type: Regular undo Begin trans Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000Ext idx: 0
flg2: 0
*-----------------------------
uba: 0x00c01148.225d.03 ctl max scn: 0x00000000402241c4 prv tx scn: 0x0000000040224225
txn start scn: scn: 0x0000000040224b0c logon user: 75
prev brb: 12587332 prev bcl: 0
KDO undo record:
KTB Redo
op: 0x04 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: L itl: xid: 0x0008.01f.000732e4 uba: 0x00c00133.48c3.1c
flg: C--- lkc: 0 scn: 0x000000004022499b
KDO Op code: LKR row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x01026d49 hdba: 0x01003de2
itli: 1 ispac: 0 maxfr: 4858
tabn: 0 slot: 4 to: 0
*-----------------------------
* Rec #0x5 slt: 0x0c objn: 25383(0x00006327) objd: 25383 tblspc: 4(0x00000004)
* Layer: 11 (Row) opc: 1 rci 0x04
Undo type: Regular undo Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*-----------------------------
KDO undo record:
KTB Redo
op: 0x02 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: C uba: 0x00c01148.225d.04
KDO Op code: URP row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x01026d49 hdba: 0x01003de2
itli: 1 ispac: 0 maxfr: 4858
tabn: 0 slot: 4(0x4) flag: 0x2c lock: 1 ckix: 0
ncol: 16 nnew: 3 size: -8
col 11: *NULL*
col 12: [ 1] 80
col 13: *NULL*
*-----------------------------
* Rec #0x6 slt: 0x0c objn: 33397(0x00008275) objd: 33397 tblspc: 4(0x00000004)
* Layer: 10 (Index) opc: 22 rci 0x05
Undo type: Regular undo Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*-----------------------------
index undo for leaf key operations
KTB Redo
op: 0x03 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: Z
Dump kdilk : itl=35, kdxlkflg=0x1 sdc=105 indexid=0x1011a42 block=0x010006bf
(kdxlpu): purge leaf row
key :(15): 07 78 7d 02 09 04 01 02 06 01 02 6d 49 00 04
*-----------------------------
* Rec #0x7 slt: 0x0c objn: 33402(0x0000827a) objd: 33402 tblspc: 4(0x00000004)
* Layer: 10 (Index) opc: 22 rci 0x06
Undo type: Regular undo Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*-----------------------------
index undo for leaf key operations
KTB Redo
op: 0x04 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: L itl: xid: 0x0015.015.00030b17 uba: 0x00c002d1.1f82.23
flg: C--- lkc: 0 scn: 0x00000000402249ee
Dump kdilk : itl=23, kdxlkflg=0x1 sdc=84 indexid=0x1011a82 block=0x01000739
(kdxlre): restore leaf row (clear leaf delete flags)
key :(9): 01 80 06 01 02 6d 49 00 04
*-----------------------------
* Rec #0x8 slt: 0x0c objn: 33402(0x0000827a) objd: 33402 tblspc: 4(0x00000004)
* Layer: 10 (Index) opc: 22 rci 0x07
Undo type: Regular undo Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*-----------------------------
index undo for leaf key operations
KTB Redo
op: 0x04 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: L itl: xid: 0x0015.00b.00030dae uba: 0x00c002d1.1f82.0c
flg: C--- lkc: 0 scn: 0x0000000040224961
Dump kdilk : itl=2, kdxlkflg=0x1 sdc=105 indexid=0x1011a82 block=0x0100075d
(kdxlpu): purge leaf row
key :(10): 02 c2 03 06 01 02 6d 49 00 04
*-----------------------------
* Rec #0x9 slt: 0x0b objn: 26039(0x000065b7) objd: 26039 tblspc: 4(0x00000004)
* Layer: 11 (Row) opc: 1 rci 0x00
Undo type: Regular undo Begin trans Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000Ext idx: 0
flg2: 0
*-----------------------------
uba: 0x00c01148.225d.04 ctl max scn: 0x0000000040224225 prv tx scn: 0x0000000040224271
txn start scn: scn: 0x0000000040224b24 logon user: 75
prev brb: 12587332 prev bcl: 0
KDO undo record:
KTB Redo
op: 0x04 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: L itl: xid: 0x0015.012.000309d1 uba: 0x00c002ce.1f82.14
flg: C--- lkc: 0 scn: 0x0000000040223a82
KDO Op code: URP row dependencies Disabled
xtype: XAxtype KDO_KDOM2 flags: 0x00000080 bdba: 0x0100408f hdba: 0x0100408a
itli: 10 ispac: 0 maxfr: 4858
tabn: 0 slot: 11(0xb) flag: 0x2c lock: 0 ckix: 18
ncol: 27 nnew: 1 size: 0
Vector content:
col 24: [ 7] 78 7d 02 09 03 3b 03
*-----------------------------
* Rec #0xa slt: 0x03 objn: 25383(0x00006327) objd: 25383 tblspc: 4(0x00000004)
* Layer: 11 (Row) opc: 1 rci 0x00
Undo type: Regular undo Begin trans Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000Ext idx: 0
flg2: 0
*-----------------------------
uba: 0x00c01148.225d.09 ctl max scn: 0x0000000040224271 prv tx scn: 0x00000000402242d9
txn start scn: scn: 0x0000000040224c9f logon user: 75
prev brb: 12587332 prev bcl: 0
KDO undo record:
KTB Redo
op: 0x04 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: L itl: xid: 0x0008.015.00073002 uba: 0x00c00133.48c3.05
flg: C--- lkc: 0 scn: 0x000000004022488d
KDO Op code: LKR row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x01026d57 hdba: 0x01003de2
itli: 4 ispac: 0 maxfr: 4858
tabn: 0 slot: 4 to: 0
*-----------------------------
* Rec #0xb slt: 0x03 objn: 25383(0x00006327) objd: 25383 tblspc: 4(0x00000004)
* Layer: 11 (Row) opc: 1 rci 0x0a
Undo type: Regular undo Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*-----------------------------
KDO undo record:
KTB Redo
op: 0x02 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: C uba: 0x00c01148.225d.0a
KDO Op code: URP row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x01026d57 hdba: 0x01003de2
itli: 4 ispac: 0 maxfr: 4858
tabn: 0 slot: 4(0x4) flag: 0x2c lock: 4 ckix: 0
ncol: 16 nnew: 3 size: -8
col 11: *NULL*
col 12: [ 1] 80
col 13: *NULL*
*-----------------------------
* Rec #0xc slt: 0x03 objn: 33397(0x00008275) objd: 33397 tblspc: 4(0x00000004)
* Layer: 10 (Index) opc: 22 rci 0x0b
Undo type: Regular undo Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*-----------------------------
index undo for leaf key operations
KTB Redo
op: 0x04 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: L itl: xid: 0x0017.01b.00012986 uba: 0x00c017d7.0e8b.16
flg: C--- lkc: 0 scn: 0x0000000040224aba
Dump kdilk : itl=17, kdxlkflg=0x1 sdc=0 indexid=0x1011a42 block=0x010006bf
(kdxlpu): purge leaf row
key :(15): 07 78 7d 02 09 04 01 02 06 01 02 6d 57 00 04
*-----------------------------
* Rec #0xd slt: 0x03 objn: 33402(0x0000827a) objd: 33402 tblspc: 4(0x00000004)
* Layer: 10 (Index) opc: 22 rci 0x0c
Undo type: Regular undo Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*-----------------------------
index undo for leaf key operations
KTB Redo
op: 0x04 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: L itl: xid: 0x000c.00d.00073a4f uba: 0x00c0154c.484a.31
flg: C--- lkc: 0 scn: 0x0000000040224a4a
Dump kdilk : itl=25, kdxlkflg=0x1 sdc=84 indexid=0x1011a82 block=0x01000739
(kdxlre): restore leaf row (clear leaf delete flags)
key :(9): 01 80 06 01 02 6d 57 00 04
*-----------------------------
* Rec #0xe slt: 0x03 objn: 33402(0x0000827a) objd: 33402 tblspc: 4(0x00000004)
* Layer: 10 (Index) opc: 22 rci 0x0d
Undo type: Regular undo Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*-----------------------------
index undo for leaf key operations
KTB Redo
op: 0x04 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: L itl: xid: 0x0011.00b.00061292 uba: 0x00c1229c.3935.31
flg: C--- lkc: 0 scn: 0x0000000040224c92
Dump kdilk : itl=4, kdxlkflg=0x1 sdc=0 indexid=0x1011a82 block=0x0100a990
(kdxlpu): purge leaf row
key :(10): 02 c2 03 06 01 02 6d 57 00 04
*-----------------------------
* Rec #0xf slt: 0x10 objn: 25383(0x00006327) objd: 25383 tblspc: 4(0x00000004)
* Layer: 11 (Row) opc: 1 rci 0x00
Undo type: Regular undo Begin trans Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000Ext idx: 0
flg2: 0
*-----------------------------
uba: 0x00c01148.225d.0a ctl max scn: 0x00000000402242d9 prv tx scn: 0x00000000402242fa
txn start scn: scn: 0x00000000402254da logon user: 75
prev brb: 12587332 prev bcl: 0
KDO undo record:
KTB Redo
op: 0x04 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: L itl: xid: 0x000b.012.00094fef uba: 0x00c008bd.579f.31
flg: C--- lkc: 0 scn: 0x00000000402248a7
KDO Op code: LKR row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x01026d57 hdba: 0x01003de2
itli: 1 ispac: 0 maxfr: 4858
tabn: 0 slot: 5 to: 0
*-----------------------------
* Rec #0x10 slt: 0x10 objn: 25383(0x00006327) objd: 25383 tblspc: 4(0x00000004)
* Layer: 11 (Row) opc: 1 rci 0x0f
Undo type: Regular undo Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*-----------------------------
KDO undo record:
KTB Redo
op: 0x02 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: C uba: 0x00c01148.225d.0f
KDO Op code: URP row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x01026d57 hdba: 0x01003de2
itli: 1 ispac: 0 maxfr: 4858
tabn: 0 slot: 5(0x5) flag: 0x2c lock: 1 ckix: 0
ncol: 16 nnew: 3 size: -8
col 11: *NULL*
col 12: [ 1] 80
col 13: *NULL*
*-----------------------------
* Rec #0x11 slt: 0x10 objn: 33397(0x00008275) objd: 33397 tblspc: 4(0x00000004)
* Layer: 10 (Index) opc: 22 rci 0x10
Undo type: Regular undo Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*-----------------------------
index undo for leaf key operations
KTB Redo
op: 0x04 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: L itl: xid: 0x0012.012.0003cb8a uba: 0x00c022db.2684.29
flg: C--- lkc: 0 scn: 0x0000000040224b1c
Dump kdilk : itl=6, kdxlkflg=0x1 sdc=105 indexid=0x1011a42 block=0x010006bf
(kdxlpu): purge leaf row
key :(15): 07 78 7d 02 09 04 01 05 06 01 02 6d 57 00 05
*-----------------------------
* Rec #0x12 slt: 0x10 objn: 33402(0x0000827a) objd: 33402 tblspc: 4(0x00000004)
* Layer: 10 (Index) opc: 22 rci 0x11
Undo type: Regular undo Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*-----------------------------
index undo for leaf key operations
KTB Redo
op: 0x04 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: L itl: xid: 0x000a.011.0007a183 uba: 0x00c00115.4b85.2d
flg: C--- lkc: 0 scn: 0x0000000040224ae9
Dump kdilk : itl=32, kdxlkflg=0x1 sdc=84 indexid=0x1011a82 block=0x01000739
(kdxlre): restore leaf row (clear leaf delete flags)
key :(9): 01 80 06 01 02 6d 57 00 05
*-----------------------------
* Rec #0x13 slt: 0x10 objn: 33402(0x0000827a) objd: 33402 tblspc: 4(0x00000004)
* Layer: 10 (Index) opc: 22 rci 0x12
Undo type: Regular undo Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*-----------------------------
index undo for leaf key operations
KTB Redo
op: 0x04 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: L itl: xid: 0x000d.01f.000ff081 uba: 0x00c01a67.7a02.06
flg: C--- lkc: 0 scn: 0x00000000402253a1
Dump kdilk : itl=3, kdxlkflg=0x1 sdc=105 indexid=0x1011a82 block=0x0100a990
(kdxlpu): purge leaf row
key :(10): 02 c2 03 06 01 02 6d 57 00 05
*-----------------------------
.....省略部分内容
*-----------------------------
* Rec #0x16 slt: 0x1c objn: 0(0x00000000) objd: 0 tblspc: 0(0x00000000)
* Layer: 5 (Transaction Undo) opc: 7 rci 0x00
Undo type: Regular undo Begin trans Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000Ext idx: 0
flg2: 0
*-----------------------------
uba: 0x00c01148.225d.14 ctl max scn: 0x00000000402242fd prv tx scn: 0x0000000040224300
txn start scn: scn: 0x000000004022d060 logon user: 75
prev brb: 12587332 prev bcl: 0
看到这个undo block的的dump数据,就非常有意思了。
上面的信息来看,很明显undo chain的信息从0x01到0x16,一共只有22条;其中irb为整个undo chain的rollback起点;这里我大概算了下,整个undo chain包含了7个事务。其中 Rec #0x13 -> Rec #0x12 -> Rec #0x11 ->Rec #0x10 ->Rec #0x0f;这个是一个完整的事务操作,其中obj 25383就是报错的table,而另外2个obj 33397和33402 则是该表上的2个Index。再往上又是另外一个事务。
大家注意看这里irb的其实Rec# 16,看上去是不是有一点怪怪的!实际上objn 0 表示system rollback。这一点大家可以查询bootstrap$即可验证。
SQL> col sql_text for a100
SQL> select obj#,SQL_TEXT from bootstrap$ where obj# <2;
OBJ# SQL_TEXT
---------- ----------------------------------------------------------------------------------------------------
-1 8.0.0.0.0
0 CREATE ROLLBACK SEGMENT SYSTEM STORAGE ( INITIAL 112K NEXT 56K MINEXTENTS 1 MAXEXTENTS 32765 OBJNO
0 EXTENTS (FILE 1 BLOCK 128))
对于一个undo block中的undo chain记录,大家grep一下就可以发现对应的7个事务scn是存在先后(或者说大小)顺序的。
oracle@oradb1:/home/oracle $cat undo_chain.txt |grep "txn start scn: scn:"
txn start scn: scn: 0x0000000040224abc logon user: 75 -> 1075989180
txn start scn: scn: 0x0000000040224b0c logon user: 75 -> 1075989260
txn start scn: scn: 0x0000000040224b24 logon user: 75 -> 1075989284
txn start scn: scn: 0x0000000040224c9f logon user: 75 -> 1075989663
txn start scn: scn: 0x00000000402254da logon user: 75 -> 1075991770
txn start scn: scn: 0x0000000040229fba logon user: 75 -> 1076010938
txn start scn: scn: 0x000000004022d060 logon user: 75 -> 1076023392
如果你想了解更多的数据库原理、学习更多经验!可以了解一下如下的一些学习材料~~
2024年底开始做了一个数据库训练营【覆盖数据库底层原理、性能分析、故障分析、数据恢复,国产数据库如达梦、GaussDB等等相关内容,算是个人1年的学习记录总结吧】,大约有近30名学员加入其中,大家一起交流学习互动,收获满满!我也将其中的内容全部录制了下来,截至2025春节放假之前已经录制了20个视频,共计时长近50小时。【当然,系列视频仍然会不断录制,预计全部录制完毕大约会有80个视频】。
目前录制的视频接近20GB,估计全部录制完毕将达到80GB;另外配套的视频资料文档都存放在百度云盘,如下一部分:
有兴趣的小伙伴可以添加我的vx进行咨询!