Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle/SQL中ROWID的数据类型_Sql_Oracle_Rowid - Fatal编程技术网

Oracle/SQL中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(创建

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

以下链接解释了ROWID的数据类型-


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的地方,它们是连接的十六进制的字符串表示,而不是十六进制本身。