ITPub博客

首页 > 数据库 > Oracle > ROWID存储结构

ROWID存储结构

原创 Oracle 作者:EnochPersist 时间:2009-11-17 22:26:09 0 删除 编辑

今天有人问论坛上有人问
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。

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22531894/viewspace-1028808/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-09-14

  • 博文量
    8
  • 访问量
    7281