ITL中xid 和 uba的驗證!
ITL中xid 和 uba代表了什麼意思?
需要了解block的internal格式!下面透過一個試驗做了一些驗證!
SQL> truncate table t;
表被截斷。
SQL> desc t
名稱 是否為空? 型別
----------------------------------------- -------- --------------------------
ID NUMBER(38)
NAME VARCHAR2(10)
SQL> insert into t values(1,'a');
已建立 1 行。
SQL> select id ,name , rowid from t;
ID NAME ROWID
---------- ---------- ------------------
1 a AAADhJAAEAAAAAUAAA
SQL> select dbms_rowid.rowid_block_number(rowid) from t;
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
------------------------------------
20
SQL> alter system dump datafile 4 block 20;
系統已更改。
dump資訊如下:
--=================================================================================
Start dump data blocks tsn: 8 file#: 4 minblk 20 maxblk 20
buffer tsn: 8 rdba: 0x01000014 (4/20)
scn: 0x0000.0027fd5b seq: 0x03 flg: 0x00 tail: 0xfd5b0603
frmt: 0x02 chkval: 0x0000 type: 0x06=trans data
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x081D2200 to 0x081D4200
.............................
Block header dump: 0x01000014
Object id on Block? Y
seg/obj: 0x3849 csc: 0x00.27fd5b itc: 2 flg: E typ: 1 - DATA
brn: 0 bdba: 0x1000011 ver: 0x01 opc: 0
inc: 0 exflg: 0
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000c.011.000000e6 0x00800554.00d6.28 ---- 1 fsc 0x0000.00000000
0x02 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
data_block_dump,data header at 0x81d2264
===============
tsiz: 0x1f98
hsiz: 0x14
pbl: 0x081d2264
bdba: 0x01000014
76543210
flag=--------
ntab=1
nrow=1
frre=-1
fsbo=0x14
fseo=0x1f90
avsp=0x1f7b
tosp=0x1f7b
0xe:pti[0] nrow=1 offs=0
0x12:pri[0] offs=0x1f90
block_row_dump:
tab 0, row 0, @0x1f90
tl: 8 fb: --H-FL-- lb: 0x1 cc: 2
col 0: [ 2] c1 02
col 1: [ 1] 61
end_of_block_dump
End dump data blocks tsn: 8 file#: 4 minblk 20 maxblk 20
--=================================================================================
data block的dump資訊中ITL中的xid:0x000c.011.000000e6是由undo資訊組成的:xidusn.xidslot.xidsqn
驗證如下:
SQL> select to_number('000c','xxxxx') from dual;
TO_NUMBER('000C','XXXXX')
-------------------------
12
SQL> select to_number('011','xxxxx') from dual;
TO_NUMBER('011','XXXXX')
------------------------
17
SQL> select to_number('000000e6','xxxxxxxxx') from dual;
TO_NUMBER('000000E6','XXXXXXXXX')
---------------------------------
230
--=================================================================================
data block的dump資訊中ITL中的uba:0x00800554.00d6.28是由uba(undo block address).UBASQN.UBAREC
undo block address是00800554,是一個16進位制數,可以透過如下函式轉換為UBAFIL和UBABLK
驗證如下:
--=================================================================================
SQL> select dbms_utility.data_block_address_file(to_number('00800554','xxxxxxx
x')) from dual;
DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE(TO_NUMBER('00800554','XXXXXXXXXX'))
------------------------------------------------------------------------
2
SQL> select dbms_utility.data_block_address_block(to_number('00800554','xxxxxx
xx')) from dual;
DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK(TO_NUMBER('00800554','XXXXXXXXXX'))
-------------------------------------------------------------------------
1364
SQL> select to_number('00d6','xxxxxxxxx') from dual;
TO_NUMBER('00D6','XXXXXXXXX')
-----------------------------
214
--=================================================================================
上面dump之後計算的資訊和v$transaction的資料完全一致
SQL> select xidusn,xidslot,xidsqn,ubafil,ubablk,ubasqn,ubarec from v$transaction
2 ;
XIDUSN XIDSLOT XIDSQN UBAFIL UBABLK UBASQN UBAREC
---------- ---------- ---------- ---------- ---------- ---------- ----------
12 17 230 2 1364 214 40
SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/19602/viewspace-61745/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- zt_ITL Cleanout和ITL中的事務狀態分析
- PostgreSQL XID與virtual XID區別SQL
- ACCESS 密碼驗證/文字驗證中的小坑密碼
- JavaScript驗證碼生成和驗證效果JavaScript
- 驗證HFile和HLog中序列號的關係
- ITL和Freelist的區別
- PHP中的郵箱驗證PHP
- iOS 中對 HTTPS 證書鏈的驗證iOSHTTP
- Asp.net中基於Forms驗證的角色驗證授權ASP.NETORM
- 5.3. 驗證 Seam安全中的驗證特性是基於JAAS
- PHP算式驗證碼和漢字驗證碼的實現方法PHP
- 零知識證明在隱私保護和身份驗證中的應用
- 從ITL到Undo前映象提取實驗
- K重交叉驗證和網格搜尋驗證
- Java和Ceylon物件的構造和驗證Java物件
- Laravel 驗證類 實現 路由場景驗證 和 控制器場景驗證Laravel路由
- Seam中的JSF表單驗證JS
- winform中輸入資料的驗證ORM
- MySQL的可插入驗證和客戶端明文驗證外掛介紹MySql客戶端
- HTTPS 和 加密 和 AFNetworking 證書驗證HTTP加密
- ITL
- 驗證碼的識別和運用
- Android註冊功能--電話驗證和郵箱驗證Android
- 關於block的ITL和dump的擴充套件BloC套件
- ITL的含義
- js中驗證輸入數字的方法JS
- 也談Asp.net 中的身份驗證ASP.NET
- system trigger中的servererror事件驗證ServerError事件
- Django(59)驗證和授權Django
- Struts 驗證框架 配置和使用框架
- MVC3中使用驗證介面卡修改預設的驗證提示資訊MVC
- Oracle基礎結構之OS驗證和口令檔案驗證Oracle
- SSL證書是如何驗證的?驗證方式推薦
- 驗證碼的作用和相關技術
- 軟體測試的驗證和確認
- IOT中溢位區屬性pctthreshold和including驗證
- HTTPS加密過程和TLS證書驗證HTTP加密TLS
- 開發中遇到的jquery函式應用和表單驗證處理jQuery函式