Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

65

积分

0

好友

31

主题
1#
发表于 2012-5-6 15:31:22 | 查看: 5469| 回复: 3
看了rowid的介绍
http://blog.csdn.net/tianlesoftware/article/details/5020718

关键部分是

.
rowid
说明




rowid是伪列(pseudocolumn),伪劣的意思是实际上这一列本身在数据字典中并不存在,在查询结果输出时它被构造出来的。


rowid并不会真正存在于表的data block,但是他会存在于index当中,用来通过rowid来寻找表中的行数据。


我的问题是,如果一个表没有建立索引?那么rowid存储在哪里呢?
2#
发表于 2012-5-6 21:50:53
明显没有存储

回复 只看该作者 道具 举报

3#
发表于 2012-5-6 22:46:41
"我的问题是,如果一个表没有建立索引?那么rowid存储在哪里呢?"

不需要存储rowid 。 通俗地说rowid 是一行数据的地址 , index 索引记录rowid 这个地址以便能直接去访问 一行数据。

rowid 是自解释的 ,即可以直接通过rowid 转换成 文件号、块号、行号

当oracle访问 heap table中的数据行时 , 会逻辑读取 该行所在 的数据块DBA , oracle知道 row 的 文件号、块号、行号,它没有必要 再在 数据块中 再存放一次  rowid。


打个 不恰当的 比方: 

只有 寄信的人(index) 才需要知道 row的 门牌号。

回复 只看该作者 道具 举报

4#
发表于 2012-5-6 23:41:25
注意, rwoid在8I以后可能会因为汇入而改变!

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-25 12:54 , Processed in 0.046682 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569