Oracle 中伪数列ROWID

  Oracle 的ROWID 用来唯一标识表中的一条记录,是这条数据在数据库中存放的物理地址。

  一般来说,每一行数据对应的rowid是固定而且唯一的,在这一行数据存入数据库的时候就确定了。

  可以利用rowid来查询记录,而且通过rowid查询记录是查询速度最快的查询方法。ROWID只有在表发生移动(比如表空间变化,数据导入/导出以后),才会发生变化。

  ROWID的结构:

  有18位,每位使用base-64代码,包括a-z,A-Z,0-9,+,- 共64个字符表示。 A表示0,B表示1,。。。Z表示25,a表示26,。。。z表示51,0表示52,。。9表示61,+表示62,-表示63。ROWID具体可以划分为4个部分。
  
  1-6位:代表OBJECT ——数据对象编码 。将其转化成数字后匹配DBA_OBJECTS中DATA_OBJECT_ID字段值,可以确定表信息。
  7-9位:文件相对值 ——相关文件编码。 相对表空间的数据文件号。
  10-15:文件中的BLOCK ——块编码。 表示这条记录在数据文件中的第几个BLOCK中。
  16-18:BLOCK中的SLOT值 ——行编码。表示这条记录是BLOCK中的第几条记录。
 
  注:在FORM开发过程,如果数据块重新布局,ROWID项的属性值就会自动变为4,此时需手工修改值为18。
原文地址:https://www.cnblogs.com/Cqiang/p/2746531.html