oracle rowid 的使用方法

来源:这里教程网 时间:2026-02-28 05:56:31 作者:

oracle rowid 的使用方法

1.创建一临时表
create table test_rowid (id number, row_id rowid);
2.插入一行记录
insert into test_rowid values(1,null);
3.修改刚插入的记录
update test_rowid set row_id = rowid where id = 1;
4.查看rowid
rowid,row_id from test_rowid;
返回结果为:
rowid                                                      row_id
AAAO0DAAJAAAAMYAAA               AAAO0DAAJAAAAMYAAA

Oracle的物理扩展ROWID有18位,每位采用64位编码,分别用A~Z、a~z、0~9、+、/共64个字符表示。A表示0,B表示1,……Z表示25,a表示26,……z表示51,0表示52,……,9表示61,+表示62,/表示63。

ROWID具体划分可以分为4部分。

(1).OOOOOO:前6位表示DATA OBJECT NUMBER,将起转化位数字后匹配DBA_OBJECTS中的DATA_OBJECT_ID,可以确定表信息。

如上面例子中的DATA OBJECT NUMBER是AAAO0D,转化位数字是14×64×64 +52×64 + 3。
输入以下查询:
select owner, object_name from dba_objects where data_object_id = 14*64*64 + 52*64 + 3;
返回:
OWNER    OBJECT_NAME
WG             TEST_ROWID
(2)FFF:第7到9位表示相对表空间的数据文件号。
上面的例子中是AAJ,表示数据文件9。
输入以下查询:
(3).BBBBBB:第10到15位表示这条记录在数据文件中的第几个BLOCK中。

上面的例子是AAAAMY,转化位数字是12×64+24,表示这条记录在数据文件中的第792个BLOCK。

(4).RRR:最后3位表示这条记录是BLOCK中的第几条记录。

上面的例子是AAA,表示第0条记录(总是从0开始计数)。

四.参考资料

1.oracle rowid
2.Oracle基本数据类型存储格式浅析(四)——ROWID类型(一)
3.oracle数据文件为什么存在 Rfile# and file#

相关推荐