===========================================================
oracle数据文件为什么存在 Rfile# and file#
===========================================================
作者: bitirainy(http://bitirainy.itpub.net)
发表于: 2005.03.19 12:29
分类:
Oracle is anything
出处: http://bitirainy.itpub.net/post/330/22749
---------------------------------------------------------------
归根结底的原因是因为 ROWID 的存储格式造成的,因为 rowid 中文件编号标志只有10bit,最大数据容量1024,由于不存在0编号文件,所以实际上只允许1023个文件编号。在oracle8 之前的版本的数据库中,rowid是受限的,只包括 file# /block# /row# ,则数据库最多只允许1023个文件。
而oracle8开始rowid 包括 data_object_id# / Rfile# /block# /rowid# 。data object id 的引入,同时支持了表分区的概念,一个表可以拥有多个分区(segment),而一个分区可以在不同的表空间中(由Rfile# 表示在segment对应的表空间中对应的 相对文件编号)。这样表的容量也增大了。 扩展的rowid使得oracle不再局限于数据文件只能有1023个的限制,而一个表可以分区,也使得表的容量不再局限于单个表空间中(1023个文件的限制)。
当然,你或许要问,为什么oracle不调整rowid中表示 file# 的 bit数量,这个应该是由于兼容性的引起的,在 oracle7 的索引中存储的rowid就是 file# + block# + row# ,,因为这样处理后关于索引的存储,oracle8和oracle7没有发生变化(在oracle8中一个索引(可能分区)segment肯定对应了一个表(可能分区)的segment,这个可以由数据字典关系得到,从而确立了 索引中的rowid 对应哪个 表空间中的数据文件),在升级的时候就不用关心 索引的问题,而直接升级oracle软件以及运行相关的包,否则将会大动干戈解决索引的问题。这就是oracle实现物理文件升级的基础。
当然,真正升级的时候,一些数据文件头的 rfile# 需要发生变化,这也是有文件的一些存储的特性决定的,为了不和oracle8的格式发生冲突,才需要修改。这个修改代价非常的小,所以oracle选择了这个方案。详细的信息,大家可以去参考metalink相关内容,有详细的 存储(byte 中字节位)的变化关系。
http://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&p_id=122926.1
bitirainy
发表于:2005.03.19 12:29
::分类:
(
Oracle is anything
)
::阅读:(6674次)
::
评论
(8)

good article
[回复]
这样可以解释很多oracle限制问题,如一个表空间最多1023个数据文件,一个数据文件最多2的22次幂个block
玉面飞龙
评论于: 2005.03.20 13:48
[回复]
但我還是不很明白 在什么情況下 Rfile# 和 file# 會不相同。
zyong
评论于: 2005.04.07 11:22
[回复]
我晕,很显然 file# > 1023 的时候就不一样啊!!!!
biti_rainy
评论于: 2005.04.07 23:08
[回复]
这两个值之间并无规律可寻,要做转换还得从系统表来进行查询,在索引的叶结点中也是只存了RDBA和SLOT,最后还是要根据所在表的DATA_OBJECT_ID查出相应的表空间来读取记录。
也许以后的版本会突破这一限制。
d.c.b.a
评论于: 2005.04.08 11:45

是师兄吗?
[回复]
biti的师兄吗?你在linux下装过oracle吗?
赵兰军
评论于: 2005.06.29 16:24
[回复]
linux 下安装oracle?
仔细按照文档做,就ok了
偶在 linux/AIX/HP unix 等os上安装oracle,按照oracle 文档做,基本没出过什么问题。
biti_rainy
评论于: 2005.07.03 22:45

rwmcccjujsbjoz,
Priligy australia, OQEPMMp,
Posologie levitra, cbVgOJA,
Buy ativan online without prescription, vzlGIcT,
No prescription online pharmacy, iWTTegz,
Cialis online no prescription us, JAoErQv,
Buy xanax without prescription in usa, zWHmHww,
Generic online pharmacy, Xlryyba,
Buy no rx cheap valium, goXFXLJ.
[回复]
rwmcccjujsbjoz, Priligy australia, OQEPMMp, Posologie levitra, cbVgOJA, Buy ativan online without prescription, vzlGIcT, No prescription online pharmacy, iWTTegz, Cialis online no prescription us, JAoErQv, Buy xanax without prescription in usa, zWHmHww, Generic online pharmacy, Xlryyba, Buy no rx cheap valium, goXFXLJ.

ertlicjujsbjoz,
Order zolpidem, cjHxLUc.
[回复]
ertlicjujsbjoz, Order zolpidem, cjHxLUc.
Ambien cr
评论于: 2012.02.09 19:20