1. 程式人生 > >Oracle資料庫之ROWID偽列

Oracle資料庫之ROWID偽列

通過rowid可以快速的定位某一行具體的資料位置。便於資料的查詢和管理
執行sql
select rowid,empno,ename from pub_emp 
顯示執行資訊
----------------------------------------
rowid    empno    ename
AAASPbAAEAAAAJ7AAA7369SMITH
AAASPbAAEAAAAJ7AAB7499ALLEN
AAASPbAAEAAAAJ7AAC7521WARD
AAASPbAAEAAAAJ7AAD7566JONES
AAASPbAAEAAAAJ7AAE7654MARTIN
AAASPbAAEAAAAJ7AAF7698BLAKE
AAASPbAAEAAAAJ7AAG7782CLARK
AAASPbAAEAAAAJ7AAH7788SCOTT
AAASPbAAEAAAAJ7AAI7839KING
AAASPbAAEAAAAJ7AAJ7844TURNER
AAASPbAAEAAAAJ7AAK7876ADAMS
AAASPbAAEAAAAJ7AAL7900JAMES
AAASPbAAEAAAAJ7AAM7902FORD
AAASPbAAEAAAAJ7AAN7934MILLER



我們從rowid內查詢出來的rowid是基於base64編碼,一共有18位,可以分成四個部分
如:AAASPbAAEAAAAJ7AAA
AAASPb AAE AAAAJ7 AAA


AAASPb:表示data_object_id(包含物件的段的資料字典標示),根據object_id(物件的資料字典標示)可以確定segment(段)。
AAE:表示相對檔案號(RFN)。根據相對檔案號(RFN)可以得到絕對檔案號(AFN),確定datafile。
AAAAJ7:表示data_block_number。相對於datafile而言,不算相對於tablespace的編號。
AAA:表示row_number。