1. 程式人生 > >Oracle使用dump轉儲數據塊

Oracle使用dump轉儲數據塊

oracle dump datafile block

在對Oracle做一些比較內核的研究時,會用需要用到dump命令把數據庫中的信息轉儲到trace文件中。本文簡單介紹使用dump命令把數據塊中的信息轉儲到trace文件中。

實驗環境:rhel7.2+11.2.0.4

語法:

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;


alter system dump datafile ‘{name}‘ block {Block no};
alter system dump datafile ‘{name}‘ block min {Block min} block max {Block max};

1、創建測試表

[email protected]>drop table t;

Table dropped.

[email protected]>create table t as select * from dual;

Table created.

[email protected]>select * from t;

D
-
X
X
X

3 rows selected.

2、查詢數據表所在的數據塊號

[email protected]>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塊上。

3、使用dump命令轉儲塊信息到trace文件中,並找到相應的trace文件

[email protected]>alter system dump datafile 4 block 37771;

System altered.

[email protected]>select value from v$diag_info where name=‘Default Trace File‘;

VALUE
-------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/ora11g/ora11g/trace/ora11g_ora_5332.trc

4、查看trace文件中的內容

技術分享

技術分享

上面截取了一些信息:包含表的object_id <objn 90835>,表上的事務槽信息、表中的三行數據的詳細信息等。

轉儲出來的trace文件包含大量的信息,如果能看懂並分析這樣的trace文件,說明向大師又邁近了一步。

不同版本對數據庫dump出來的trace文件,出處有所不同,可能是從磁盤也可能是從buffer cache中,有興趣的同學可以自行測試。


參考:《Oracle Core Essential Internals for DBAs and Developers》

本文出自 “DBA Fighting!” 博客,請務必保留此出處http://hbxztc.blog.51cto.com/1587495/1972013

Oracle使用dump轉儲數據塊