Oracle / SQL中ROWID的数据类型

时间:2012-07-23 12:10:30

标签: sql oracle rowid

Oracle / SQL中ROWID的数据类型是什么?这个值是如何存储的?

2 个答案:

答案 0 :(得分:5)

以下链接说明了ROWID的数据类型是什么 - ROWID data type

ROWID存储为psuedocolumn

答案 1 :(得分:1)

ROWID(因为Oracle8调用扩展ROWID,直到Oracle7现在称为受限ROWID)存储/编码行的物理位置。

(扩展)ROWID以十六进制格式编码以下字段: OBJID(行所属对象的唯一ID),FILENO(创建对象的TABLESPACE中的相对文件号,BLOCKNO(文件中的相对块编号)和ROWNUM(行的相对编号)在街区内。)

(受限制的)ROWID仅包含FILENO(数据库中的相对文件号),BLOCKNO和ROWNUM(如在扩展的ROWID中)并且没有OBJID。

在任何给定时间,ROWID对数据库中的行进行唯一编码(可能除了共享相同ROWID的聚簇故事)。 ROWID可能会更改(由于数据库的重组),也可能会被重用(例如在删除和插入之后,新行可能会重新使用ROWID)。导出/导入表也将为表重新分配新的ROWID。

请注意,对于扩展ROWID格式的每个数据库,FILENO不一定是唯一的,但由于扩展格式还包含OBJID(唯一标识存储表对象段的表空间),因此我们可以找到唯一的文件

BLOCKNO对于每个数据库文件是唯一的,并且每个数据库块的ROWNUM是唯一的。

异常:索引组织表 - 由于索引重组(叶块移动),ROWID无法找到确切的块。

由于数据库重组操作,ROWID可能会发生变化。