Oracle中DBMS_ROWID定位元據行實體儲存體位置

來源:互聯網
上載者:User

對於oracle中的堆表,我們可以通過oracle內建的ROWID偽列得到對應行記錄所在的ROWID的值(注意,這個ROWID只是一個偽列,實際的塊中並不存在該列)。然後我們可以通過DBMS_ROWID包中的相關方法來通過ROWID偽列來定位對應資料行的實際實體儲存體物理地址。

dbms_rowid.rowid_relative_fno:定位該資料行所在的資料檔案

dbms_rowid.rowid_block_number:定位該資料行在資料檔案的第多少個塊

dbms_rowid.rowid_row_number:定位該資料行在資料區塊的第多少行

下面舉例進行查看:

SCOTT@ORCL>desc emp

Name                                      Null?    Type

----------------------------------------- -------- ----------------------------

EMPNO                                     NOT NULL NUMBER(4)

ENAME                                              VARCHAR2(10)

JOB                                                VARCHAR2(9)

MGR                                                NUMBER(4)

HIREDATE                                           DATE

SAL                                                NUMBER(7,2)

COMM                                               NUMBER(7,2)

DEPTNO                                             NUMBER(2)

SCOTT@ORCL>col location for a20

SCOTT@ORCL>select empno,rowid,dbms_rowid.rowid_relative_fno(rowid) || '_' ||dbms_rowid.rowid_block_number(rowid) || '_' || dbms_rowid.rowid_row_number(rowid) location

 2  from emp;

EMPNO ROWID              LOCATION

---------- ------------------ --------------------

7369 AAAMfMAAEAAAAAgAAA 4_32_0

7499 AAAMfMAAEAAAAAgAAB 4_32_1

7521 AAAMfMAAEAAAAAgAAC 4_32_2

7566 AAAMfMAAEAAAAAgAAD 4_32_3

7654 AAAMfMAAEAAAAAgAAE 4_32_4

7698 AAAMfMAAEAAAAAgAAF 4_32_5

7782 AAAMfMAAEAAAAAgAAG 4_32_6

7788 AAAMfMAAEAAAAAgAAH 4_32_7

7839 AAAMfMAAEAAAAAgAAI 4_32_8

7844 AAAMfMAAEAAAAAgAAJ 4_32_9

7876 AAAMfMAAEAAAAAgAAK 4_32_10

EMPNO ROWID              LOCATION

---------- ------------------ --------------------

7900 AAAMfMAAEAAAAAgAAL 4_32_11

7902 AAAMfMAAEAAAAAgAAM 4_32_12

7934 AAAMfMAAEAAAAAgAAN 4_32_13

14 rows selected.

拿第一行資料進行說明該行的ROWID偽列的值為 AAAMfMAAEAAAAAgAAA,可以通過ROWID包通過這個ROWID偽列轉換出來的值為4_32_0,代表該行在資料檔案4的第32個資料區塊的第0行。

本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.