ITPub博客

首页 > 数据库 > Oracle > 关于rowid的试验(根据网上的资料自己做的试验记录下来,方便以后查询)

关于rowid的试验(根据网上的资料自己做的试验记录下来,方便以后查询)

原创 Oracle 作者:EnochPersist 时间:2009-09-16 13:18:38 0 删除 编辑

> select * from t;

KEY NAME

---------- ----------

1 boobooke

2 boobooke

3 boobooke

>select rowid,

dbms_rowid.rowid_object(rowid) ono,

dbms_rowid.rowid_relative_fno(rowid) fno,

dbms_rowid.rowid_block_number(rowid) bno,

dbms_rowid.rowid_row_number(rowid) rno,

key,name from t;

ROWID ONO FNO BNO RNO KEY NAME

---------------------------------------- ---------- ---------- ---------- ----------- ----------- ----------

AAANYeAAEAAAAGIAAA 54814 4 392 0 1 boobooke

AAANYeAAEAAAAGIAAB 54814 4 392 1 2 boobooke

AAANYeAAEAAAAGIAAC 54814 4 392 2 3 boobooke

Rowed 由4部分组成

1.Data_object_id 通过dbms_rowid.rowid_object(rowid)返回,返回的是物理对象id(data_object_id)不是逻辑对象id(object_id),物理对象id是数据字典dba_objects的data_object_id字段(对应没有data_ojbect_id的数据类型以后再研究)。

2.file_id 通过dbms_rowid.rowid_relative_fno(rowid)返回,返回的是文件id,文件id是数据字典dba_data_files的file_id字段。

3.block_id 通过dbms_rowid.rowid_block_number(rowid)返回,返回的是数据块id,

4.row_number通过dbms_rowid. rowid_row_number(rowid)返回,返回的是row number

ROWID的编码是64进制

A~Z表示0~25

a~z表示26~51

0~9表示52~61

+表示 62

/表示 63

1~6位表示data_object_id,AAANYe=13*64*64+24*64+30=54814

7~9位表示file_id,AAE=4

10~15位表示block_id,AAAAGI=6*64+8=392

16~18位表示row_number AAA = 0

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22531894/viewspace-1027004/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-09-14

  • 博文量
    8
  • 访问量
    7281