Slide 9
Slide 9 text
© 2024 NTT DATA Corporation 9
データブロックとUNDO
• データブロックを参照するとき、そのデータが適切なバージョンであることを保証しなければならない。これをデータの読み取り
一貫性(のバージョン)という
Block header dump: 0x00c0070a
Object id on Block? Y
seg/obj: 0x18317 csc: 0x00.1731c44 itc: 2 flg: 0 typ: 1 - DATA
fsl: 0 fnx: 0x0 ver: 0x01
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0001.001.00001de4 0x01802ec8.0543.05 --U- 3 fsc 0x0000.01731c46
0x02 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
bdba: 0x00c0070a
data_block_dump,data hearder at 0xc90225c
===============
tsiz: 0x1fa0
hsiz: 0x18
pbl: 0x0c90225c
76543210
flag=--------
ntab=1
nrow=3
frre=-1
fsbo=0x18
fseo=0x1f85
avsp=0x1f6d
tosp=0x1f6d
0xe:pti[0] nrow=3 offs=0
0x12:pri[0] offs=0x1f97
0x14:pri[1] offs=0x1f8e
0x16:pri[2] offs=0x1f85
block_row_dump:
tab 0, row 0, @0x1f97
tl: 9 fb: --H-FL-- lb: 0x1 cc:2
col 0: [ 2] c1 02
col 1: [ 2] c1 02
tab 0, row 1, @0x1f8e
tl: 9 fb: --H-FL-- lb: 0x1 cc:2
col 0: [ 2] c1 03
col 1: [ 2] c1 03
tab 0, row 2, @0x1f85
tl: 9 fb: --H-FL-- lb: 0x1 cc:2
col 0: [ 2] c1 04
col 1: [ 2] c1 04
end_of_block_dump
• ここで1つの表を作成し、そのブロックダンプを取得し、
ITL(Interested Transaction List)の状態を確認する
• ITLは最近このブロックを更新したトランザクションを特定す
るためにある
• エントリ0x01のトランザクション0x1.1.1de4が
SCN1731c46でこのブロックを更新した
• ブロックはまだクリーンアウトされていない(Flag:U)
• ロックされた行数は3(Lck)
• トランザクションのUNDOブロック(Uba)
• Ubaからトランザクションにより更新されたUNDOを特定し
ロールバックすることができる
• 0x01のUba先のUNDOブロックには、3行目のINSERT
を取り消し、Ubaを2行目のUNDOブロックに更新
create table t1(id number, n1 number);
insert into t1 values(1,1);
insert into t1 values(2,2);
insert into t1 values(3,3);
commit;
ID N1
1 1
2 2
3 3
表ブロックダンプ