oracle rowid
来源:互联网 发布:mac火鹤色口红图片 编辑:程序博客网 时间:2024/05/21 17:19
一:什么是oracle rowid
oracle数据库使用rowid用来唯一标示一行。下面来研究一下扩展rowid(extended rowid)。
1:先来认识一下rowid
从查询所得的结果,我们可以感性的认识到rowid共占18位。rowid的结构如图所示。
上图摘自官方文档。我们可以清晰的看到rowid分为四部分。结合上述查询结果,可知:
AAAMfM----------------------->数据对象编号
AAE ------------------------>文件编号
AAAAAg----------------------->块编号
AAA ----------------------->行编号
AAAMfM:六位表示data object id,根据object id可以确定segment。
AAE:三位表示相对文件号。根据该相对文件号可以得到绝对文件号,从而确定datafile。
关于相对文件号和绝对文件号,请参考http://blog.itpub.net/post/330/22749
AAAAAg:六位表示data block number。这里的data block number是相对于datafile的编号,而不是相对于tablespace的编号。
AAA:三位表示row number。
需要明白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开始的位置数,d是编码对应的数字。
例如上面的例子:AAAMfMAAEAAAAAgAAA
文件编号:AAE,从右向左。
4*(64^0)=4;
0*(64^1)=0;
0*(64^2)=0;
所以文件编号为:4+0+0=4;为了验证上述计算结果,查询语句如下:
file_id为4,与计算结果一致。
二:与rowid有关的SQL
1:可通过dbms_rowid包获得rowid的详细信息。如:
2:eygle大师写的函数
create or replace function get_rowid(l_rowid in varchar2)return varchar2isls_my_rowid varchar2(200); rowid_type number; object_number number; relative_fno number; block_number number; row_number number; begin dbms_rowid.rowid_info(l_rowid,rowid_type,object_number,relative_fno, block_number, row_number); ls_my_rowid := 'Object# is :'||to_char(object_number)||chr(10)|| 'Relative_fno is :'||to_char(relative_fno)||chr(10)|| 'Block number is :'||to_char(block_number)||chr(10)|| 'Row number is :'||to_char(row_number); return ls_my_rowid ;end;/
- oracle rowid
- ORACLE ROWID
- Oracle RowID
- ORACLE ROWID
- Oracle ROWID
- Oracle ROWID
- oracle rowid
- ORACLE-rowid
- Oracle ROWID
- Oracle rowid
- Oracle ROWID
- Oracle ROWID
- Oracle rowid
- Oracle rowid
- Oracle ROWID
- oracle-rowid
- Oracle中的Rowid
- Oracle pseudo column RowID
- 字节数组 与 十六进制间的转换
- 生活
- EXT JS 表单
- iOS开发那些事--编写OCUnit测试方法-逻辑测试方法
- JDBC连接各种数据库方法
- oracle rowid
- Js Quiz
- 易语言中的数据类型
- java4android 操作字符串
- 学习Struts2 jQuery Plugin 3.0
- Linux查看文件夹大小的命令
- 内存管理相关知识
- weblogic 链接sqlserver2005找不到驱动的解决办法
- 区间覆盖问题