Oracle:dump轉儲檔案

流浪的野狼發表於2013-06-08

轉儲檔案內容1:資料檔案

     

      轉儲資料檔案、重做日誌等檔案的內容也是最佳化中經常用到的技術,因此DBA必須掌握。在最佳化專案中,有時候為了分析表和索引等的碎片、行遷移等情況,需要對資料檔案進行轉儲。把資料庫檔案(資料檔案、日誌檔案、控制檔案等)的內容取出有助於對Oracle資料庫內部結構展開分析。使用作業系統的轉儲工具可以匯出資料庫檔案中的內容,不過這種方式相對比較麻煩。Oracle提供的ALTER SYSTEM DUMP 命令就可以把資料匯出到Trace檔案中,這一命令是以資料塊為單位的。

      對於普通的資料檔案,透過下面的命令可以匯出資料檔案中的資料塊:

      ALTER SYSTEM DUMP DATAFILE [<file_id>|<file_name>] block <block_no>;

或者:

      ALTER SYSTEM DUMP _name> block <block_no>;

或者:

     ALTER SYSTEM DUMP DATAFILE  [<file_id>|<file_name>] block min <block_no_min>  block max <block_no_max>;

      第一條命令匯出一個資料塊,第二條命令可以匯出多個連續的資料塊。以上命令不能轉儲 LMT的臨時表空間檔案。如果用ALTER SYSTEM DUMP DATAFILE命令去匯出一個LMT的臨時表空間檔案,會報ORA-1205錯誤。

      要轉儲 LMT的臨時檔案,需要使用DUMP TEMPFILE命令:

      ALTER SYSTEM DUMP TEMPFILE 'E:\ORACLE\ORADATA\ORC9\sk_TEMP.DBF' BLOCK 1;   

 

轉儲檔案內容2:轉儲物件的段頭

 

比如:

  1.  SELECT SEGMENT_NAME, HEADER_FILE, HEADER_BLOCK   
  2.         FROM DBA_SEGMENTS    
  3.         WHERE OWNER = 'SCOTT' AND SEGMENT_NAME = 'EMP';   
  4.    
  5. SEGMENT_NAME         HEADER_FILE HEADER_BLOCK   
  6. --------------------------  ----------------- ---------------   
  7. EMP                            8                    7411  

 

 

      ALTER SYSTEM DUMP DATAFILE 8 BLOCK 7411;

 

      產生的Trace檔案會存放在USER_DUMP_DEST引數指定的位置,如果沒有設定這個引數,那麼預設的位置是$Oracle_BASE/admin//udump。 如果要轉儲回退段,那麼可以這樣操作:

  1.  SELECT SEGMENT_NAME, HEADER_FILE, HEADER_BLOCK    
  2.         FROM DBA_SEGMENTS    
  3.         WHERE SEGMENT_NAME = 'RBS01';   
  4.    
  5.    
  6. SEGMENT_NAME         HEADER_FILE HEADER_BLOCK   
  7. -------------------- ----------- ------------   
  8. RBS01                          2          514   
  9.    
  10.    
  11.   alter system dump datafile 2 block 514;  

     或者直接用下面的命令轉儲:

 

     ALTER SYSTEM DUMP UNDO HEADER RBS01;

      這個例子說明EMP的段頭在8號檔案的7411資料塊。使用下面的命令,可以把段頭轉儲出來;

      在Oracle中,每個段都包含一個段頭。段頭一般來說是某個段第一個擴充套件的第一個塊,包含段的資訊(段的擴充套件情況、FREE LIST的數量等)。要轉儲段頭的資訊,首先需要定位某個段的段頭所在的位置。透過下面的查詢可以檢視到段頭的相關資訊:

 

     SELECT SEGMENT_NAME, HEADER_FILE, HEADER_BLOCK  FROM DBA_SEGMENTS  WHERE OWNER = '' AND SEGMENT_NAME = ''; 

 

 

轉儲檔案內容3:轉儲控制檔案

     透過設定系統事件,可以把控制檔案轉儲到Trace檔案:

     ALTER SESSION SET EVENTS 'immediate trace name controlf level <level>'; 

 

     的取值如下表所示。

 Level

轉儲的內容

1

檔案頭資訊

2

檔案頭資訊,資料庫資訊記錄和檢查點程式記錄

3

所有的記錄,僅僅包含最新和最老的迴圈使用型別的記錄

4

類似3,不過包含4條最新的迴圈使用型別的記錄

5+

類似3,迴圈使用型別的記錄是每個級別的雙倍

轉儲檔案內容4:轉儲控制檔案

      使用ALTER SYSTEM DUMP LOGFILE可以轉儲線上日誌檔案。也可以使用ALTER SESSION命令去轉儲重做日誌頭的資訊。在資料庫處於NOMOUNT、MOUNT或者OPEN狀態時,就可以使用上面的命令。當作業系統相同的情況下,可以透過客戶端去轉儲另外一個資料庫的重做日誌。重做日誌的資訊會被寫入一個Trace檔案。

      可以用下面的方法轉儲線上日誌。

根據DBA(Data Block Address)轉儲記錄。

根據RBA(Redo Block Address)轉儲記錄。

根據時間點去轉儲記錄。

根據層次和操作碼轉儲記錄。

轉儲檔案頭資訊

轉儲整個重做日誌檔案

摘自:http://hanjian861202.iteye.com/blog/1070835

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28612416/viewspace-763553/,如需轉載,請註明出處,否則將追究法律責任。

相關文章