Oracle Rowid的简单理解和认识

1.ROWIDOracle的一个用来给数据排序的伪列,
2.ROWIDOracle数据库中每一行数据的一个唯一标识
3.ROWID并不是像一般列值那样明确地存储
4.ROWID并不是直接给出了一行数据的物理地址,但是它可以用来定位一行数据
5.ROWID提供了访问表当中一条数据的最快方法
6.ROWID需要10字节来存储在磁盘上,用18个字符显示
 
18个字符的格式说明如下:
18个字符的划分用四个字来说就是“六三六三”
第一个‘六’代表Data Object Number 数据对象编号
第一个‘三’代表Relative File Number 相关文件编号
第二个‘六’代表Block Number 块编号
第二个‘三’代表Row Number 行编号
例如:
SQL> select a.rowid,a.* from tb_employee a;
 
ROWID              EMP_NO     EMP_NAME             DEP_NO
------------------ ---------- -------------------- ----------
AAAMicAABAAAOtCAAA 10         Jack                 20
AAAMicAABAAAOtCAAB 20         Tom                  10
AAAMicAABAAAOtCAAC 30         Mary                 10
 
tb_employee表中3行数据:
数据对象编号均为:AAAMic
相关文件编号均为:AAB
块编号均为AAAOtC
行编号分别为AAAAABAAC
 
四种编号是一个由大及小的过程,我的理解是根据数据对象编号找到相应的表空间,根据关键文件编号找到相应的数据文件,根据块编号找到相应的块,根据行编号找到对应的行。