itl在被覆蓋之前被儲存了下來1!
之後構造consistent read而使用。[@more@]
SQL> create table t(id int) initrans 1;
表已建立。
SQL> insert into t values(1);
已建立 1 行。
SQL> select id,dbms_rowid.rowid_relative_fno(rowid) fno,dbms_rowid.rowid_block_n
umber(rowid) bno from t;
ID FNO BNO
---------- ---------- ----------
1 1 32962
--===============================
session 2:(session 2的這個操作沒有任何實際意義,
目的就是佔用一個itl)
SQL> insert into t values(2);
已建立 1 行。
--===============================
session 1:
SQL> alter system dump datafile 1 block 32962;
系統已更改。
--========================
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000c.004.0000099e 0x01c0001d.198e.21 ---- 1 fsc 0x0000.00000000
0x02 0x000f.024.00000997 0x01c000e7.18ef.3c ---- 1 fsc 0x0000.00000000
--========================
SQL> commit;
提交完成。
SQL> alter system dump datafile 1 block 32962;
系統已更改。
--==========================
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000c.004.0000099e 0x01c0001d.198e.21 --U- 1 fsc 0x0000.018ed530
0x02 0x000f.024.00000997 0x01c000e7.18ef.3c ---- 1 fsc 0x0000.00000000
--===========================
--這裡有個疑問:事務提交之後為什麼第一個itl中的flag標記是U(第三位)而不是C(第一位)?
SQL> insert into t select object_id from dba_objects;
已建立11315行。
SQL> select xidusn,xidslot,ubafil,ubarec,ubablk,start_ubablk,start_ubarec from v
$transaction;
XIDUSN XIDSLOT UBAFIL UBAREC UBABLK START_UBABLK START_UBAREC
---------- ---------- ---------- ---------- ---------- ------------ ------------
12 1 7 19 17 29 34
15 36 7 60 231 231 60
SQL> alter system dump datafile 7 block 17;
系統已更改。
--從下面的dump資訊中Rec #0x13(10進位制的19,上面查出來的ubarec)
沒有發現被事務(insert into t select object_id from dba_objects)
所覆蓋的itl。
--=================================
* Rec #0x13 slt: 0x01 objn: 11946(0x00002eaa) objd: 11946 tblspc: 0(0x00000000)
* Layer: 11 (Row) opc: 1 rci 0x12
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
op: C uba: 0x01c00011.198f.12
KDO Op code: QMD row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x00408263 hdba: 0x004080c1
itli: 1 ispac: 0 maxfr: 4863
tabn: 0 lock: 0 nrow: 95
--=================================
接下來再來dump這個事務使用的undo chain的start_ubablk:
SQL> alter system dump datafile 7 block 29;
系統已更改。
--從下面的dump資訊中Rec #0x22(10進位制的34,上面查出來的start_ubarec)
我們發現了被事務(insert into t select object_id from dba_objects)
所覆蓋的由事務(insert into t values(1);插入的第一條記錄)所使用的itl:
0x01 0x000c.004.0000099e 0x01c0001d.198e.21 ---- 1 fsc 0x0000.00000000
--==============================
* Rec #0x22 slt: 0x01 objn: 11946(0x00002eaa) objd: 11946 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: 0x00000000
*-----------------------------
uba: 0x01c0001d.198e.21 ctl max scn: 0x0000.018ecec6 prv tx scn: 0x0000.018eced6
txn start scn: scn: 0x0000.018ed54c logon user: 0
prev brb: 29360155 prev bcl: 0
KDO undo record:
KTB Redo
op: 0x04 ver: 0x01
op: L itl: xid: 0x000c.004.0000099e uba: 0x01c0001d.198e.21
flg: C--- lkc: 0 scn: 0x0000.018ed530
KDO Op code: QMD row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x004080c2 hdba: 0x004080c1
itli: 1 ispac: 0 maxfr: 4863
tabn: 0 lock: 0 nrow: 255
--===============================
結論:itl在被覆蓋之前放在了事務的undo chain(單向連結串列的尾)的start_ubablk中以備
之後構造consistent read而使用。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/19602/viewspace-1019104/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 避免resolv.conf設定被覆蓋
- 儲存篇(1)
- 物件儲存,未來儲存新潮流物件
- 檢查是否區域內所整數都被覆蓋
- 杉巖物件儲存當底座,IPFS:這下穩了物件
- 儲存一下
- CTEX安裝必須注意 系統變數 path 被覆蓋變數
- 棧1: 順序儲存
- Oracle儲存過程-1Oracle儲存過程
- “井蓋吃人”的屢見不鮮,智慧井蓋來了!
- 用k*k的方格覆蓋單元格(i,j),單元格可以被覆蓋幾次?
- istanbul 繞過 window 變數儲存覆蓋率資料變數
- 在博物館裡儲存遊戲歷史有多難?(下)遊戲
- 【Python3網路爬蟲開發實戰】5-資料儲存-1 檔案儲存-1 TXT文字儲存Python爬蟲
- 年入1億,使用者覆蓋7400萬:他們在一個被忽略的市場里布局了八年
- 儲存系列1-openfiler開源儲存管理平臺實踐
- 資料儲存(1):從資料儲存看人類文明-資料儲存器發展歷程
- 「畢昇一號」DNA活字儲存噴墨印表機來了,低成本、高效率、全自動的DNA儲存
- 塊儲存 檔案儲存 物件儲存物件
- 申訴被駁!蘋果被要求在 12 月 9 日之前接入外部支付連結蘋果
- 重名就會被覆蓋?那JavaScript中是如何實現過載的呢?JavaScript
- 解決 flutter module 中 .android 和 .ios 目錄不被覆蓋的問題FlutterAndroidiOS
- 檔案替換後怎麼恢復,恢復被覆蓋的檔案
- 儲存—物件儲存_Minio物件
- 【儲存資料恢復】H3C FlexStorage儲存卷被刪如何恢復資料?資料恢復Flex
- 配置SQL Server Service Broker來傳送儲存過程資料(下)SASQLServer儲存過程
- 儲存架構|Haystack太強了!存2600億圖片架構
- Laravel 整合 GitHub 來儲存檔案.mdLaravelGithub
- C# 讀取四波段遙感影像生成植被覆蓋度柵格(TIF)C#
- 在伺服器建立 git 儲存庫伺服器Git
- 在Entity Framework中使用儲存過程Framework儲存過程
- 在 Rainbond 上使用 Curve 雲原生儲存AI
- 行式儲存 列式儲存
- 袋鼠儲存 v1.4.1 來了:docker映象,linux命令列安裝,客戶端...DockerLinux命令列客戶端
- 終於弄明白了 RocketMQ 的儲存模型MQ模型
- linux下修改history命令儲存條數Linux
- “雙碳”背後的硬核儲存(下)
- Python中scrapy下載儲存圖片Python
- MySQL優化---儲存過程和儲存函式-1-轉自部落格園MySql優化儲存過程儲存函式