[Oracle] rowid详解

Posted Jan丶X

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Oracle] rowid详解相关的知识,希望对你有一定的参考价值。

一. rowid 

rowid实际上和rownum一样,都是oracle里的虚列,并不真正存在,但却具一个重要功能:

说明数据存在的数据文件\\块\\行,以便快速查找

二. 举例说明

-- 创建表test,插入20条数据
CREATE TABLE test as select ROWNUM AS rn FROM dual connect BY rownum <=20;
-- 通过dbms_rowid包查询各个rowid表示的文件\\块\\行
  SELECT tb.ROWID ,ddf.file_name ,dbms_rowid.rowid_block_number(tb.rowid) block_number,
  dbms_rowid.rowid_row_number(tb.rowid) row_number
    FROM test tb,dba_data_files ddf
  WHERE ddf.file_id=dbms_rowid.rowid_to_absolute_fno(tb.rowid,user,'TEST')
</pre><pre name="code" class="plain">
ROWID              FILE_NAME

                                                                                                             BLOCK_NUMBER ROW_NUMBER
------------------ -------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------ -
AAASRnAAEAAAALjAAA F:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF

                                                                                                                      739          0
AAASRnAAEAAAALjAAB F:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF

                                                                                                                      739          1
AAASRnAAEAAAALjAAC F:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF

                                                                                                                      739          2
AAASRnAAEAAAALjAAD F:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF

                                                                                                                      739          3
AAASRnAAEAAAALjAAE F:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF

                                                                                                                      739          4
AAASRnAAEAAAALjAAF F:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF

                                                                                                                      739          5
AAASRnAAEAAAALjAAG F:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF

                                                                                                                      739          6
AAASRnAAEAAAALjAAH F:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF

                                                                                                                      739          7
AAASRnAAEAAAALjAAI F:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF

                                                                                                                      739          8
AAASRnAAEAAAALjAAJ F:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF

                                                                                                                      739          9
AAASRnAAEAAAALjAAK F:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF

                                                                                                                      739         10
AAASRnAAEAAAALjAAL F:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF

                                                                                                                      739         11
AAASRnAAEAAAALjAAM F:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF

                                                                                                                      739         12
AAASRnAAEAAAALjAAN F:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF

                                                                                                                      739         13
AAASRnAAEAAAALjAAO F:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF

                                                                                                                      739         14
AAASRnAAEAAAALjAAP F:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF

                                                                                                                      739         15
AAASRnAAEAAAALjAAQ F:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF

                                                                                                                      739         16
AAASRnAAEAAAALjAAR F:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF

                                                                                                                      739         17
AAASRnAAEAAAALjAAS F:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF

                                                                                                                      739         18
AAASRnAAEAAAALjAAT F:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF

                                                                                                                      739         19


.结论

试验得出:oracle的rowid存储了每一行数据的准确位置,除非对数据做了行迁移操作,否则这rowid不会随便变化。

以上是关于[Oracle] rowid详解的主要内容,如果未能解决你的问题,请参考以下文章

oracle树状索引详解(图摘取《收获不止oracle》)

informix/oracle rowid 问题

说说Oracle的rowid

oracle中rowid怎么用?

转载oracle索引详解

Oracle数据库中rowid啥作用????!!!!!谢谢!!!!