在對Oracle作一些比較內核的研究時,會用須要用到dump命令把數據庫中的信息轉儲到trace文件中。本文簡單介紹使用dump命令把數據塊中的信息轉儲到trace文件中。sql
實驗環境:rhel7.2+11.2.0.4數據庫
語法:
oracle
alter system dump datafile {File no} block {Block no};
alter system dump datafile 4 block 129;
alter system dump datafile {File no} block min {Block min} block max {Block max};
alter system dump datafile 4 block min 129 block max 133;
app
alter system dump datafile '{name}' block {Block no};
alter system dump datafile '{name}' block min {Block min} block max {Block max};
ide
一、建立測試表
測試
zx@ORA11G>drop table t; Table dropped. zx@ORA11G>create table t as select * from dual; Table created. zx@ORA11G>select * from t; D - X X X 3 rows selected.
二、查詢數據表所在的數據塊號spa
zx@ORA11G>select dbms_rowid.ROWID_RELATIVE_FNO(rowid),dbms_rowid.ROWID_BLOCK_NUMBER(rowid) from t; DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) ------------------------------------ ------------------------------------ 4 37771 4 37771 4 37771 3 rows selected.
從上面的查詢中能夠看到三條數據都存儲在4號文件的37771塊上。orm
三、使用dump命令轉儲塊信息到trace文件中,並找到相應的trace文件
blog
zx@ORA11G>alter system dump datafile 4 block 37771; System altered. zx@ORA11G>select value from v$diag_info where name='Default Trace File'; VALUE ------------------------------------------------------------------------- /u01/app/oracle/diag/rdbms/ora11g/ora11g/trace/ora11g_ora_5332.trc
四、查看trace文件中的內容事務
上面截取了一些信息:包含表的object_id <objn 90835>,表上的事務槽信息、表中的三行數據的詳細信息等。
轉儲出來的trace文件包含大量的信息,若是能看懂並分析這樣的trace文件,說明向大師又邁近了一步。
不一樣版本對數據庫dump出來的trace文件,出處有所不一樣,多是從磁盤也多是從buffer cache中,有興趣的同窗能夠自行測試。
參考:《Oracle Core Essential Internals for DBAs and Developers》