今天有人问论坛上有人问
data_object_id#+rfile#+block#+row#组成,占用10个bytes的空间
32bit的 data_object_id#
10 bit 的 rfile#
22bit 的 block#
16 bit 的 row#
我动手实验了一下记录下来
select dump(rowid) dump,dbms_rowid.rowid_object(rowid) dno,dbms_rowid.rowid_relative_fno(rowid) fno,dbms_rowid.rowid_block_number(rowid) bno,dbms_rowid.rowid_row_number(rowid) rno from test2;
DUMP DNO FNO BNO RNO
---------------------------------------- ---------- ---------- ---------- ----------
Typ=69 Len=10: 0,0,207,21,1,0,5,124,0,0 53013 4 1404 0
Typ=69 Len=10: 0,0,207,21,1,0,5,124,0,1 53013 4 1404 1
Typ=69 Len=10: 0,0,207,21,1,0,5,124,0,2 53013 4 1404 2
Typ=69 Len=10: 0,0,207,21,1,0,5,124,0,3 53013 4 1404 3
以第一行为例子
len = 10代表10个字节。
0,0,207,21,1,0,5,124,0,0 这正好是10个字节,我们把它转换成2进制
00000000,00000000,11001111,00010101,00000001,00000000,00000101,01111100,00000000,00000000
用不同的颜色表示了
data_object_id#=00000000000000001100111100010101 = 53013
rfile#=0000000100 = 4
block#=0000000000010101111100 = 1404
row#=0000000000000000 = 0
正好是通过dbms_rowid这个包计算出来的值
长度加在一起是80个bit。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22531894/viewspace-1028808/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22531894/viewspace-1028808/