大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 数据库 -> oracle8的ROWID结构

oracle8的ROWID结构

时间: 2021-07-31 作者:daque

1、干什么运用rowid  oracle把rowid动作b-树和其里面算法标示row的独一标示。  在oracle8往日的本子中,rowid标示file、block、row number,只用一个数字代  表file号。  在oracle第88中学,一个datafile有两个数字代办:  一个一致值,是所有数据库独一的。不妨看dba_data_files中的file_id。  一个对立值,在tablespace中是独一的,不妨看dba_data_files中的relative_  fno。  新的rowid运用对立值,以是必需寄存segment的标示,要不就会污染。以是orac  le8在rowid中介入东西的segment号,用来标示table大概partition。  2、rowid的构造 运用base-64代码,囊括a-z,a-z,0-9,+,-。所有18位。  1-6位:代办object  7-9位:文献对立值  10-15:文献中的block  16-18:block中的slot值  3、tablespace-relative寻址办法  运用的是tablespace-relative寻址办法,多个文献不妨有沟通的对立值,由于它  们属于各别的tablespace,以是不许从新的rowid获得一致地方,然而这没有题目  ,由于当要处置某个object时,仍旧能决定它属于哪个tablesapce了。在tables  pace中,文献对立值是独一的,以是rowid仍旧不妨独一标示一个object。table  space-relative寻址办法是oracle第88中学扶助超大数据库的要害本领。  4、data object number  data object number用来引导segment,一切segment都有data object number,  寄存在每个data block中,并且不反复。  最发端的功夫,dba_objects.object_id=dba_objects.data-object_id,然而在  上述情景下data-object_id会在如次情景下减少  truncate table  move partition  oracle会查看rowid中的data object number和block中的data object number,  保护她们之间的本子是普遍的。  oracle也运用data object number以保证rollback的记录和最新的segment记录一  致。  要提防的是data object number不是object 的标记  5、restricted rowid  oracle7的rowid方法是  1-8位:block number  9-12位:row number  13-16位:file number  oracle8扶助短的、旧方法的rowid,效率是  对nopartition table的index entry  对partition table的local index entry  row piece chain pointer  受限rowid的里面寄存是6byte,  4byte=data block number  2byte=row number  这即是说,index entry运用6byte寄存该rowid,这对大普遍index充满了。然而  这种短rowid不许运用在patition table的global index上,由于partition大概  跨tablespace。表露这种rowid仍旧是18位的  6、扩充的rowid  oracle在里面寄存功夫是10 byte,囊括(data object number,data block nu  mber,row number)  oracle8运用扩充的rowid:  partition table 的global index  server 算法  扩充的rowid在select时,仍旧是18位的表露,寄存在rowid字段中。  7、在oracle第88中学运用oracle7的rowid  从oracle8的db中查问oracle7的rowid功夫,rowid归来的是oracle7的方法,也可  以用在where语句中。  从oracle7的db中查问oracle8的rowid功夫,rowid归来的是oracle8的方法,也可  以用在where语句中,然而不许寄存在rowid字段中。然而你要用dbms_rowid 包来  证明之。  即使包括扩充的oracle8 rowid,这不许把oracle8的数据import到oracle7中。从  oracle7中不妨import到oracle第88中学。  8、application的移植题目  普遍步调的移植该当没有题目。惟有在底下情景下才商量移植题目:  application运用了rowid  table囊括rowid典型的字段  即使步调犹如下情景,必需运用dbms_rowid包:  本人拉拢rowid  本人领会rowid  即使只是是传播rowid到变量、大概只是做为一个完全运用,则不妨不受感化。  9、数据的移植题目  不管运用export/import还运用移植东西,oracle7中的rowid字段到了oracle第88中学  就机动扩充。  即使在某个字段实质中包括rowid,则必需细工用dbms_rowid包来变换。  10、dbms_rowid包  由$oracle_home/rdbms/admin/dbmsutil.sql创造,本来在catproc.sql中包括着  。供给处置rowid的少许因变量。  rowid_create  rowid_info  rowid_type  rowid_object  rowid_relative_fno  rowid_block_number  rowid_to_absolute_fno  rowid_to_extended  rowid_to_restricted  rowid_verify  dbms_rowid.rowid_to_extended  (old_rowid in rowid,  schema_name in varchar2,  object_name in varchar2,  conversion_type in number  )  return rowid;  变换受限rowid到扩充rowid,用来变换旧的rowid到oracle8的方法。  dbms_rowid.rowid_to_restricted  变换扩充的rowid到受限的rowid。  dbms_rowid.rowid_verify  确定一个受限的rowid能否不妨变换到扩充的方法  dbms_rowid.row_info  用来证明rowid,不妨获得data object number,relative file number,block  number和row number。  dbms_rowid.create  天生rowid。  

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.