[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不会随便变化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值