【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行。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.