rdba地址如何计算出file_id和block_id

rdba: 0x0241a162转换

一、第一种方法

RDBA由rfile# + block#组成,相对文件号10位 block号22位。
首先将十六进制转换为二进制:
SELECT pkg_number_trans.f_hex_to_bin('0241a162') FROM dual;
              10 0100 0001 1010 0001 0110 0010
补全32位
0000 0010 0100 0001 1010 0001 0110 0010

然后将二进制转换为十进制:
SELECT pkg_number_trans.f_bin_to_dec('0000001001') FROM dual;
--9    文件号
SELECT pkg_number_trans.f_bin_to_dec('0000011010000101100010') FROM dual;--106850  块号

二、第二种方法

 SELECT pkg_number_trans.f_hex_to_dec('0241a162') as dec FROM dual;

 DEC
--------------------
37855586

 select dbms_utility.data_block_address_file(37855586) "file", dbms_utility.data_block_address_block(37855586) "block"  from dual;

      file      block
---------- ----------
         9     106850


pkg_number_trans.f_hex_to_bin、pkg_number_trans.f_bin_to_dec来自于: http://blog.csdn.net/guogang83/article/details/8002014

你可能感兴趣的:(File,hex)