1. 程式人生 > >理解UNDO-4 總結

理解UNDO-4 總結

寫了前面3章後,感覺還魚尾,感覺不完整樣!有魚頭和魚尾的問題沒有得到解決. 好像吃了一條魚,只吃了魚身,沒有看到魚頭和

魚頭之疑惑是 讀一致性: 當一個查詢找到該塊,如何通過行來發現該行的是否被修改提交過. 怎麼樣找到ITL裡面 哪個事務槽影響了該行?

實際上它不需要通過行來判斷是哪個事務ITL, 而是把整個塊中ITL裡面已提交的SCN 來對比,凡是大於查詢回話開始的SCN 就要回退. 也就是說ITL 大於的 都要回退 通過UBA來. 這樣就構造出 CR塊

魚尾問題是 做延遲塊清除的時候,如何判斷當前的SCN 是自己要的SCN 呢? 如何在控制區裡面找到屬於自己事務槽的呢?

經過仔細研究 推到出是 通過恢復UNDO首條記錄裡面的內容,每恢復一次就減掉當前的WRAP#值,直到減到跟自己的WRAP#值一樣為止.

如何在控制區裡面找到屬於自己事務槽的呢? 目前發現只有一條事務控制區記錄. 或許每次延遲塊清楚 都要把UNDO段頭塊做恢復.也跟讀一致性一樣 單獨複製到記憶體區裡去做回滾.

當然這樣效能比較低下, 如果事務控制區記錄了每條事務槽的重用資訊的話,這樣效能會更高
這個是事務控制區的內容 通過
alter system dump undo header ‘_SYSSMU2_2232571081$’;

TRN CTL:: seq: 0x268a chd: 0x001d ctl: 0x000a inc: 0x00000000 nfb: 0x0000
mgc: 0xb000 xts: 0x0068 flg: 0x0001 opt: 2147483646 (0x7ffffffe)
uba: 0x00c001ef.2682.28 scn: 0x0000.16c326e5

通過UBA提供的UNDO塊地址 DUMP出UNDO內容,先計算出檔案和塊號
select dbms_utility.data_block_address_file(to_number(‘00c001ef’,
‘xxxxxxxxxxxx’)) file_id,
dbms_utility.data_block_address_block(to_number(‘00c001ef’,
‘xxxxxxxxxxxx’)) block_id
from dual;

然後DUMP:
alter system dump datafile 3 block 495;

內容如下 從藍色字型看起
* 2017-02-28 15:41:26.505
Start dump data blocks tsn: 2 file#:3 minblk 495 maxblk 495
Block dump from cache:
Dump of buffer cache at level 4 for tsn=2 rdba=12583407
BH (0x20af88f30) file#: 3 rdba: 0x00c001ef (3/495) class: 20 ba: 0x20a3cc000
set: 9 pool: 3 bsz: 8192 bsi: 0 sflg: 1 pwc: 240,28
dbwrid: 0 obj: -1 objn: 0 tsn: 2 afn: 3 hint: f
hash: [0x2593c5220,0x1d8fc0110] lru: [0x1f5f8d598,0x1c4f6da98]
ckptq: [NULL] fileq: [NULL] objq: [0x1f3febd00,0x1c4f6dac0] objaq: [0x1f5f8d5d0,0x1c4f6dad0]
st: XCURRENT md: NULL fpin: ‘ktuwh03: ktugnb’ tch: 13
flags: block_written_once redo_since_read
LRBA: [0x0.0.0] LSCN: [0x0.0] HSCN: [0xffff.ffffffff] HSUB: [388]
Block dump from disk:
buffer tsn: 2 rdba: 0x00c001ef (3/495)
scn: 0x0000.16c329b0 seq: 0x1e flg: 0x04 tail: 0x29b0021e
frmt: 0x02 chkval: 0x3af8 type: 0x02=KTU UNDO BLOCK
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x00007F4606E8CA00 to 0x00007F4606E8EA00
7F4606E8CA00 0000A202 00C001EF 16C329B0 041E0000 [………)……]
7F4606E8CA10 00003AF8 00070002 0000B03B 28462682 [.:……;….&F(]


UNDO BLK:
xid: 0x0002.007.0000b03b seq: 0x2682 cnt: 0x46 irb: 0x28 icl: 0x0 flg: 0x0000

Rec Offset Rec Offset Rec Offset Rec Offset Rec Offset

0x01 0x1f60 0x02 0x1e48 0x03 0x1dd4 0x04 0x1d50 0x05 0x1ce4
0x06 0x1c80 0x07 0x1c2c 0x08 0x1b9c 0x09 0x1b14 0x0a 0x1a8c
0x0b 0x19fc 0x0c 0x1974 0x0d 0x18ec 0x0e 0x185c 0x0f 0x17e4
0x10 0x175c 0x11 0x16cc 0x12 0x1654 0x13 0x15cc 0x14 0x153c
0x15 0x14c4 0x16 0x143c 0x17 0x1328 0x18 0x12c0 0x19 0x1268
0x1a 0x1214 0x1b 0x11b8 0x1c 0x1144 0x1d 0x10e8 0x1e 0x1094
0x1f 0x100c 0x20 0x0f80 0x21 0x0f18 0x22 0x0e30 0x23 0x0dc8
0x24 0x0d70 0x25 0x0ce8 0x26 0x0c88 0x27 0x0bfc 0x28 0x0b74
0x29 0x0b18 0x2a 0x0abc 0x2b 0x0a60 0x2c 0x0a04 0x2d 0x09a8
0x2e 0x094c 0x2f 0x08f0 0x30 0x0894 0x31 0x0838 0x32 0x07dc
0x33 0x0780 0x34 0x0724 0x35 0x06c8 0x36 0x066c 0x37 0x0610
0x38 0x05b4 0x39 0x0558 0x3a 0x04fc 0x3b 0x04a0 0x3c 0x0444
0x3d 0x03e8 0x3e 0x038c 0x3f 0x0330 0x40 0x02d4 0x41 0x0278
0x42 0x021c 0x43 0x01c0 0x44 0x0164 0x45 0x0108 0x46 0x00ac

*—————————–
* Rec #0x1 slt: 0x1e objn: 66563(0x00010403) objd: 66563 tblspc: 1(0x00000001)
* 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: 0x00c001ee.2682.32 ctl max scn: 0x0000.16c3268f prv tx scn: 0x0000.16c32695
txn start scn: scn: 0x0000.16c3294b logon user: 0
prev brb: 12583404 prev bcl: 0
KDO undo record:
KTB Redo
op: 0x04 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: L itl: xid: 0x0004.00d.0000b28c uba: 0x00c019c4.2439.1b
flg: C— lkc: 0 scn: 0x0000.16c32942
KDO Op code: LKR row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x00807955 hdba: 0x00807952
itli: 2 ispac: 0 maxfr: 4858
tabn: 0 slot: 7 to: 0

*—————————–
* Rec #0x2 slt: 0x1e objn: 66563(0x00010403) objd: 66563 tblspc: 1(0x00000001)
* Layer: 11 (Row) opc: 1 rci 0x01
Undo type: Regular undo Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*—————————–

總結圖
這裡寫圖片描述

請關注公眾號:
這裡寫圖片描述