Oracle undo镜像数据探究(五)

2014-11-24 12:33:01 · 作者: · 浏览: 3
------------------
* Rec #0x25 slt: 0x07 objn: 73229(0x00011e0d) objd: 73229 tblspc: 0(0x00000000)
* Layer: 11 (Row) opc: 1 rci 0x24
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: 0x020005d5.033a.24
Array Update of 1 rows:
tabn: 0 slot: 107(0x6b) flag: 0x2c lock: 0 ckix: 0
ncol: 18 nnew: 1 size: 0
KDO Op code: 21 row dependencies Disabled
xtype: XAxtype KDO_KDOM2 flags: 0x00000080 bdba: 0x0041e7f4 hdba: 0x00414908
itli: 1 ispac: 0 maxfr: 4863
vect = 8
col 3: [ 5] 52 68 79 73 31
前镜像为:Rhys1
在看第四条:
*-----------------------------
* Rec #0x24 slt: 0x07 objn: 73229(0x00011e0d) objd: 73229 tblspc: 0(0x00000000)
* 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: 0x020005d5.033a.23 ctl max scn: 0x0000.009b926d prv tx scn: 0x0000.009b9276
txn start scn: scn: 0x0000.009b950d logon user: 0
prev brb: 33555923 prev bcl: 0
KDO undo record:
KTB Redo
op: 0x04 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: L itl: xid: 0x0011.00d.0000003e uba: 0x02000230.01ee.3a
flg: C--- lkc: 0 scn: 0x0000.009b4ab6
KDO Op code: URP row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x0041e7f4 hdba: 0x00414908
itli: 1 ispac: 0 maxfr: 4863
tabn: 0 slot: 106(0x6a) flag: 0x2c lock: 0 ckix: 0
ncol: 18 nnew: 1 size: 2
col 3: [ 7] 49 5f 55 53 45 52 31
前镜像为:I_USER1
至此,在回过头来,看看 刚刚开始update的数据。
SQL> select obj#,name from t where rownum<5;
OBJ# NAME
---------- --------------------------------------------------
46 I_USER1
28 Rhys1
15 RHYS20
29 RHYS3
SQL> update t set name='rhys1' where obj#=46;
1 row updated.
SQL> update t set name='rhys2' where obj#=28;
1 row updated.
SQL> update t set name='rhys3' where obj#=15;
1 row updated.
SQL> update t set name='rhys4' where obj#=29;
1 row updated.
oracle,就是这样存储数据前镜像的。哈哈。
继续研究,然后拿出undo record的一条记录如下:
*-----------------------------
* Rec #0x24 slt: 0x07 objn: 73229(0x00011e0d) objd: 73229 tblspc: 0(0x00000000)
* 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: 0x020005d5.033a.23 ctl max scn: 0x0000.009b926d prv tx scn: 0x0000.009b9276
txn start scn: scn: 0x0000.009b950d logon user: 0
prev brb: 33555923 prev bcl: 0
KDO undo record:
KTB Redo
op: 0x04 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: L itl: xid: 0x0011.00d.0000003e uba: 0x02000230.01ee.3a
flg: C--- lkc: 0 scn: 0x0000.009b4ab6
KDO Op code: URP row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x0041e7f4 hdba: 0x00414908
itli: 1 ispac: 0 maxfr: 4863
tabn: 0 slot: 106(0x6a) flag: 0x2c lock: 0 ckix: 0
ncol: 18 nnew: 1 size: 2
col 3: [ 7] 49 5f 55 53 45 52 31
可以看到在record中也记录了该undo对应的前镜像的数据块的地址信息,bdba。
我们进行转