由Rdba發現 block地址(使用dbms_utility)

lovehewenyu發表於2012-12-12

Rdba 發現 block 地址 ( 使用 dbms_utility)

 

本文轉載( eygle

 

一、問題

Start dump data blocks tsn: 9 file#: 6 minblk 20 maxblk 20

buffer tsn: 9 rdba: 由Rdba發現 block地址(使用dbms_utility) 由Rdba發現 block地址(使用dbms_utility) 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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章