蛇年一个Oracle 600错误!15年老司机也没见过

今天还在休假,群里的朋友提到遇到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进行咨询!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值