- 36
- 0
- 约9.32千字
- 约 10页
- 2017-02-28 发布于湖北
- 举报
Oraclerowid详解
1.?????? rowid的介绍
先对rowid有个感官认识:
SQL select ROWID from Bruce_test where rownum2;
ROWID------------------ ----------AAABnlAAFAAAAAPAAAROWID的格式如下:
数据对象编号??????? 文件编号??????? 块编号?????????? 行编号OOOOOO???????????? FFF??????????????? BBBBBB RRR
我们可以看出,从上面的rowid可以得知:AAABnl 是数据对象编号AAF是相关文件编号AAAAAP是块编号AAA 是行编号
怎么依据这些编号得到具体的十进制的编码值呢,这是经常遇到的问题。这里需要明白rowid的是基于64位编码的18个字符显示(数据对象编号(6) +文件编号(3) +块编号(6)+?????? 行编号(3)=18位),其中A-Z == 0 - 25 (26)a-z == 26 - 51 (26)0-9 == 52 - 61 (10)+/ == 62 - 63 (2)
共64位,明白这个后,就可以计算出10进制的编码值,计算公式如下:d * (b ^ p)其中:b就是基数,这里就是64,p就是从右到左,已0开始的位置数比如:上面的例子文件号AAF,具体的计算应该是:
原创力文档

文档评论(0)