ROWID

来源:互联网 发布:ubuntu14.04安装mysql 编辑:程序博客网 时间:2024/04/18 14:34

rowid 伪列


AAAB6J                                                          AAF                                       AAAAAF                       AAA

段对象编号                                            相对文件编号                       表示在哪个块上        这个块上的行

(此处计算出来                                  (此处计算出来的                   

值等于dba_objects                              值等于dba_data_files

中data_object_id                                 中relative_fno的值)

的值)


相对文件编号在表空间里计数

绝对文件编号在数据库中统计计数


rowid 64位编码规则

A~Z    0~25

a~z   26~51

0~9  52~61

+  62

/   63


可以用oracle自带的包dbms_rowid来分析

select dbms_rowid.rowid_object(rowid) object_id, dbms_rowid.rowid_relative_fno(rowid) relative_file_id,
dbms_rowid.rowid_block_number(rowid) block_id ,dbms_rowid.rowid_row_number(rowid) 块中的行号 from test  where rownum<5;


扩展

对应v$session 视图中字段的值             ROW_WAIT_OJB#     ROW_WAIT_FILE#      ROW_WAIT_BLOCK#   ROW_WAIT_ROW#

select dbms_rowid,rowid_create(1,                19060,                    5,                                            152,                                   2                       )  from  dual;

计算出rowid

通过dba_objects的object_id=19060查出表table1

select * from table1 where rowid=''; 查出阻塞的数据行