Oracle/SQL中ROWID的数据类型
Oracle/SQL中ROWID的数据类型是什么?这个值是如何存储的 以下链接解释了ROWID的数据类型-Oracle/SQL中ROWID的数据类型,sql,oracle,rowid,Sql,Oracle,Rowid,Oracle/SQL中ROWID的数据类型是什么?这个值是如何存储的 以下链接解释了ROWID的数据类型- ROWID存储为。ROWID数据类型存储与表行的磁盘位置相关的信息。它们还唯一地标识表中的行。ROWID数据类型存储为十六进制 因此,十六进制字符串表示表中一行的唯一地址。ROWID(自Oracle8称为扩展ROWID,直到Oracle7现在称为受限ROWID)存储/编码一行的物理位置 (扩展)ROWID编码(十六进制格式)以下字段: OBJID(行所属对象的唯一id)、FILENO(创建
ROWID存储为。ROWID数据类型存储与表行的磁盘位置相关的信息。它们还唯一地标识表中的行。ROWID数据类型存储为十六进制 因此,十六进制字符串表示表中一行的唯一地址。ROWID(自Oracle8称为扩展ROWID,直到Oracle7现在称为受限ROWID)存储/编码一行的物理位置 (扩展)ROWID编码(十六进制格式)以下字段: OBJID(行所属对象的唯一id)、FILENO(创建对象的表空间中的相对文件号)、BLOCKNO(文件中的相对块号)和ROWNUM(块中的相对行号) (受限)ROWID仅包含FILENO(数据库中的相对文件号)、BLOCKNO和ROWNUM(与exteded ROWID中的一样),而不包含OBJID 在任何给定时间,ROWID都会对数据库中的行进行唯一编码(共享同一ROWID的集群除外)。ROWID可能会更改(由于数据库的重组),也可能会重新使用(例如,在删除和插入后,新行可能会重新使用ROWID)。此外,导出/导入表将为表重新分配新的ROWID 注意,在扩展ROWID格式中,FILENO对于每个数据库不一定是唯一的,但是由于扩展格式还包含OBJID(它唯一地标识存储表对象段的表空间),因此我们可以找到唯一的文件 BLOCKNO是每个数据库文件唯一的,ROWNUM是每个数据库块唯一的 例外情况:索引组织的表-由于索引重组(叶块的移动),ROWID无法找到确切的块
ROWID可能会因数据库重组操作而更改。请参阅:Oracle 11gR2文档:从技术上讲,ROWID根本不存储,这就是为什么它是一个伪列。ROWID不必对特定行是唯一的。存储在集群中的行可以具有相同的ROWID,尽管它们具有不同的UROWID。某些行没有row在存储rowid的地方,它们是连接的十六进制的字符串表示,而不是十六进制本身。