由Rdba發現 block地址(使用dbms_utility)
由 Rdba 發現 block 地址 ( 使用 dbms_utility)
本文轉載( eygle )
一、問題
Start dump data blocks tsn: 9 file#: 6 minblk 20 maxblk 20
buffer tsn: 9 rdba: 0x0 1800014 (6/20)
scn: 0x0000.001e917f seq: 0x01 flg: 0x00 tail: 0x917f0601
frmt: 0x02 chkval: 0x0000 type: 0x06=trans data
我們的 trc 檔案包含 rdba, 如何把 rdba 轉換成檔案號和資料塊號呢?
二、答案
Oracle 提供了一個系統包 dbms_utility 可以進行轉換
doudou@TEST> variable file# number
doudou@TEST> variable block# number
doudou@TEST> execute :file#:=dbms_utility.data_block_address_file(to_number('1800014','xxxxxxxxx'));
PL/SQL procedure successfully completed.
doudou@TEST> execute :block#:=dbms_utility.data_block_address_block(to_number('1800014','xxxxxxxxx'));
PL/SQL procedure successfully completed.
doudou@TEST> print file#
FILE#
----------
6
doudou@TEST> print block#
BLOCK#
----------
20
由 rdba: 0x0 1800014 我們已經找到了 file 6 block 20 。( 1800014 為 16 進位制部分記錄了 file 位置和 block 位置)
總結: trc 檔案中有很多我們不知道的奧秘,可以讓我們發現更多的內在問題。期待了解更多!
三、附表:
其實我們上面使用 dbms_utility 存在一個 16 進位制到 10 機制的轉換(下面簡單介紹一下函式轉換的使用)
1、 使用 to_number 函式 ( 16 進位制轉換到 10 進位制)
doudou@TEST> select to_number('1800014','x') from dual;
select to_number('1800014','x') from dual
*
ERROR at line 1:
ORA-01722: invalid number
【這裡的 X 限制了顯示的位數,不足的時候會報錯,這裡我們可以給很多個 X 避免報錯】
doudou@TEST> select to_number('1800014','xxxxxxxxxxxxx') from dual;
TO_NUMBER('1800014','XXXXXXXXXXXXX')
------------------------------------
25165844
2、 使用 to_char 函式 ( 10 進位制轉換 16 進位制)
doudou@TEST> select to_char(25165844,'xxxxxxxxxxxx') from dual;
TO_CHAR(25165844,'XXXXXXXX
--------------------------
1800014
3 、使用 bin_to_num 函式 ( 2 進位制轉換 10 進位制)
doudou@TEST> select bin_to_num(0,0,0,1) from dual;
BIN_TO_NUM(0,0,0,1)
-------------------
1
doudou@TEST> select bin_to_num(0,0,1,0) from dual;
BIN_TO_NUM(0,0,1,0)
-------------------
2
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26442936/viewspace-750992/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Script:Translate RDBA relative data block addressBloC
- ROWID的含義與塊地址rdba深入分析
- 轉換RDBA的檔案和資料塊地址(轉)
- 使用 Block 實現 KVOBloC
- dbms_utility
- DBMS_Utility學習
- oracle db、dba和rdbaOracle
- 9_深入解析Oracle rdba結構及os層rdba解析工具分享Oracle
- Oracle rdba和 dba 說明Oracle
- block實現原理BloC
- iOS block巢狀block中weakify的使用iOSBloC巢狀
- block沒那麼難(一):block的實現BloC
- Block使用場景BloC
- iOS __weak、__block使用iOSBloC
- 理解 Block 實現原理BloC
- dbms_utility的兩個有用方法
- iOS開發-Block實踐iOSBloC
- 深入研究Block捕獲外部變數和__block實現原理BloC變數
- 使用PHP4中的 IntegratedTemplate類實現BLOCK功能 (轉)PHPBloC
- iOS - 對 block 實現的探究iOSBloC
- Heap Block Compress現象分析BloC
- 使用Go語言開發短地址服務Go
- 開發遇到的坑之blockBloC
- display:block display:inline-block 的屬性、呈現和作用BloCinline
- 由報警郵件分析發現的備庫oracle bugOracle
- dbms_stat, dbms_utility與analyze的區別
- 探索iOS中Block的實現原理iOSBloC
- Objective-C block 實現機制ObjectBloC
- Block實現鏈式程式設計BloC程式設計
- 談Objective-C Block的實現ObjectBloC
- Java同步塊(synchronized block)使用詳解JavasynchronizedBloC
- 如何找出使用者帖子原始碼IP地址,準確查出發帖人IP地址!原始碼
- iOS中Block實現原理的全面分析iOSBloC
- Swift3.0 Delegate和Block的實現SwiftBloC
- iOS 揭露Block的內部實現原理iOSBloC
- vue 由0到1實現Vue
- iOS開發之利用Block逆向傳值iOSBloC
- Vivado使用技巧(25):Block Synthesis技術BloC