OracleROWID详解(二)

2014-11-24 16:16:07 · 作者: · 浏览: 1
en=10: 0,1,32,e7,1,40,0,fd,0,0
AAATLnAAFAAAAD9AAB Typ=69 Len=10: 0,1,32,e7,1,40,0,fd,0,1

其中,len=10表示是个字节。

AAATLnAAFAAAAD9AAA-->0,1,32,e7,1,40,0,fd,0,0

将十六进制转换为二进制:

0----->00000000

1----->00000001

32---->00110010

e7---->11100111

1----->00000001

40--->01000000

0---->00000000

df--->11011111

0---->0000000

0---->0000000

组合为80bit的rowid:
rowid=00000000000000010011001011100111 0000000101 0000000000000011111101 00000000000000=78567 925 253 0

结论:dump函数转换rowid后,按照32bit的object#,10bit的rfile#,22bit的block#,16bit的row#划分后结果与dbms_rowid包和base64编码的值相等,说明我测试的平台上rowid是按照10个字节存储的,并且每个内部划分也是正确的。