Oracle 中的rowid

來源:互聯網
上載者:User

Oracle中的每個表都有一個rowid,它是一個18位字元組成字串,例:AAANgBAABAAAO/KAAA.它包含的字串由A-Z,a-z,0-9,+,/這些字元組成.是64進位.

其中A-Z對應0-25,a-z對應26-51,0-9對應52-61,+對應62,/對應63.

這個18位的字串分成4段分別表示不同的意思(6,3,6,3),1-6位表示對象資料ID(段編號),7-9位代表資料檔案編號,10-12位代表資料區塊編號,13-18代表在資料區塊中的行.

假設建立下面一個表:

create table tb(id int,name varchar2(10))

insert into tb values(1,'a')
insert into tb values(2,'b')

通過select rowid,id from tb得到:

AAANgBAABAAAO/KAAA    1
AAANgBAABAAAO/KAAB    2

以AAANgB AAB AAAO/K AAA  為例,

AAANgB為表tb的id,

通過select * from all_objects where object_name='TB' 看到 object_id為55297,

計算AAANgB的10進位的值為:select 13*64*64+32*64+1 from dual 得到的值也為55297.

AAB為資料檔案的編號:1,代表dba_data_files的file_id,通過select * from dba_data_files可以看到對應的資料檔案資訊.

AAAO/K代表塊的編號:61386,通過 select 14*64*64 +63*64 + 10 from dual計算得到

行的編號是:0,上面兩行是鄰接的,僅僅行號不同.

通過下面的sql可以查看這個資料區塊是不是載入到了資料緩衝區:select * from v$bh where block#=61386 and file#=1

知道了塊號之後,可以dump這個塊在記憶體(資料緩衝區)中的內容: alter system dump datafile 1 block 61386

知道了塊號之後,可以dump這個塊在資料檔案中的內容:

alter system dump datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF'  block 61386

(由於Oracle的寫資料到資料檔案並不一定在commit後就完成,可以通過ALTER SYSTEM checkpoint強制將資料有資料緩衝區寫入資料檔案)

然後在udump檔案夾下的trace檔案中可以看到dump的內容.

Oracle中的一個package dbms_rowid裡直接提供了函數來得到塊號,行號

dbms_rowid.rowid_object:對象編號
dbms_rowid.rowid_relative_fno:檔案編號
dbms_rowid.rowid_block_number:塊號
dbms_rowid.rowid_row_number:行號

例:select rowid,id,dbms_rowid.rowid_block_number(rowid) from tb

推薦看http://www.itpub.net/thread-912812-1-1.html有非常詳細的見解。

相關文章

聯繫我們

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