欢迎投稿

今日深度:

rowid结构浅析

rowid结构浅析


rowid结构浅析
 
select rowid from dual
AAAAB0AABAAAAOhAAA
rowid结构如下:
对象号    文件号   块号   行号
XXXXXX    XXX     XXXXXX XXX
因此,
AAAAB0 对象号
AAB    文件号
AAAAOh 块号
AAA    行号
如何得知这些编号对应的十进制编码值呢(rowid是基于64位编码的18个字符显示的,对象号(6)+文件号(3)+块号(6)+行号(3)),其中
A-Z    0-25
a-z    26-51
0-9    52-61
+/     62-63
共64位,明白这个后我们就可以计算出十进制的编码值了,计算公式如下:
d*(b^p)
d      表示字符对应的十进制编码值
b      64
p      从右至左,每个对象从0开始计数
比如计算rowid=AAAAB0AABAAAAOhAAA的块号:
AAAAOh
33*(64^0)=33
14*(64^1)=896
0*(64^2)=0
0*(64^3)=0
0*(64^4)=0
0*(64^5)=0
块号就是33+896=929
可以通过dbms_rowid包来获得相关信息:
select  dbms_rowid.rowid_object(rowid) objectid--对象号
       ,dbms_rowid.rowid_relative_fno(rowid) fileid--文件号
       ,dbms_rowid.rowid_block_number(rowid) blockid--块号
       ,dbms_rowid.rowid_row_number(rowid) rownums--行号
from dual

 


www.htsjk.Com true http://www.htsjk.com/oracle/20883.html NewsArticle rowid结构浅析 rowid结构浅析 select rowid from dual AAAAB0AABAAAAOhAAA rowid结构如下: 对象号 文件号 块号 行号 XXXXXX XXX XXXXXX XXX 因此, AAAAB0 对象号 AAB 文件号 AAAAOh 块号 AAA 行号 如何得知这些编...
相关文章
    暂无相关文章
评论暂时关闭