ROWID是一个伪列,该列的值并没有真正的保存在数据块中,但是可以查询并显示出来。
ROWID的格式 OOOOOOFFFBBBBBBRRR , OOOOOO表示行所在的对象号,FFF表示行所在文件号, BBBBBB表示该行所在的数据块号,RRR表示行在数据块中的行号,rowid采用64进制的18位字符来表示。
SQL> select rowid , book_id from books ;
ROWID BOOK_ID
-----------------------------------------
AAAM0hAAEAAAAGnAAA 1
可以看出插入的记录的rowid为 [AAAM0h][AAE][AAAAGn][AAA]
我们可以通过dbms_rowid包来验证:
select dbms_rowid.rowid_relative_fno('AAAM0hAAEAAAAGnAAA') as 'File No' from dual;
select dbms_rowid.rowid_block_number('AAAM0hAAEAAAAGnAAA') as 'File No' from dual;
select dbms_rowid.rowid_row_number('AAAM0hAAEAAAAGnAAA') as 'File No' from dual;
select dbms_rowid.rowid_relative_fno('AAAM0hAAEAAAAGnAAA') as 'File No' from dual;