RMAN詳細教程(二):備份、檢查、維護、恢復

  • 2019 年 10 月 16 日
  • 筆記

RMAN詳細教程(一):基本命令程式碼
  
  

一、創建增量備份

增量備份級別為0-4,但為方便備份管理,oracle建議只限於0級和1級。

1、差異增量備份(differential incremental backup)(默認):

每次備份至上一次備份級別小於等於當前級別的備份。

  

2、累計增量備份(cumulative incremental backup):

1)每次備份至上一次小於當前級別的備份;

2)增量備份需要先進行一次0級備份,作為備份的起點。
  

3、增量備份例子:

backup incremental level 0 database;----0級增量備份,作為增量備份策略的基礎  backup incremental level 1 cumulative database;----1級累積增量備份  backup incremental level 1 database;----1級差異增量備份

  
  

二、創建增量更新備份

1、前提條件:

1)以0級數據文件鏡像作為基礎;
2)1級差異增量備份的標籤需要和0級一致;
3)增量備份被應用到0級鏡像上。
  

2、命令例子:

backup for recover of copy----只備份從上一個相同標籤的備份以來發生數據塊改變的增量備份  backup incremental level 0 for recover of copy tag 'test' database; ----使用tag標記數據文件鏡像作為備份策略基礎  recover copy of database with tag 'test';----增量更新備份

  
  

三、資料庫文件和備份的檢查

1、有效性(數據文件是否存在於正確的路徑下,並且是否存在物理塊損壞):

1)檢查是否存在邏輯塊損壞:
check logical
2)在備份時,對數據文件和歸檔日誌文件進行檢查:
backup validate check logical database archivelog all;
3)支援對數據文件中的資料庫進行檢查:
validate datafile 4 block 10 to 30;
4)支援對資料庫備份集進行驗證:
validate backupset 3;
  

2、引用腳本文件執行任務:

1)RMAN @/my_dir/test.txt
2)或登陸RMAN後@/my_dir/test.txt
  

3、列出RMAN備份資訊——list:

1)list backup of database by backup;
2)list backup by file;
3)list backup summary;
4)list expired backupset/copy;
5)list backup recoverable;
  

4、列出RMAN備份資訊——report:

1)report need backup database;—-列出當前需要備份的數據文件
2)report obsolete;
3)report schema;
4)report unrecoverable;
  

5、備份相關的動態性能表:

v$archived_log:本視圖包含了所有歸檔重做日誌文件的創建情況,備份情況以及其他資訊。  v$backup_corruption:這個視圖顯示了rman在哪些備份集中發現了損壞的數據塊。  v$copy_corruptio:本視圖顯示了哪些鏡像複製備份文件已經被損壞。  v$backup_datafile:本視圖通常用來獲取每個數據文件中非空白數據塊的數量,  從而幫助你創建出大小基本相等的備份集。另外,在視圖中也包含了數據文件中損壞的數據塊的資訊。  v$backup_redolog:本視圖顯示了在現有的備份集中飲食有哪些歸檔重做日誌文件。  v$backup_set:本視圖顯示了已經創建的備份集的資訊。  v$backup_piece:本視圖顯示了已經創建的備份片段的資訊。 

  
  

四、維護RMAN備份

1、同步資料庫備份和鏡像的邏輯記錄——crosscheck:

1)crosscheck backup;
2)crosscheck copy;
  

2、刪除備份資訊——delete:

1)刪除陳舊備份:
RMAN> delete obsolete;
2)刪除expired備份:
RMAN> delete expired backup;
3)刪除 expired 副本:
RMAN> delete expired copy;
4)刪除特定備份集:
RMAN> delete backupset 19;
5)刪除特定備份片:
RMAN> delete backuppiece 'd:backupDEMO_19.bak';
6)刪除所有備份集:
RMAN> delete backup;
7)刪除特定映像副本:
RMAN> delete datafilecopy 'd:backupDEMO_19.bak';
8)刪除所有映像副本:
RMAN> delete copy;
9)在備份後刪除輸入對象:

RMAN> delete archivelog all delete input;  RMAN> delete backupset 22 format = ''d:backup%u.bak'' delete input; 

  

3、還原和恢復資料庫文件:

1)還原是指從所有的備份或鏡像文件中找到一個用於恢復操作的數據文件。
2)恢復是指在還原的數據文件上應用redo日誌或增量備份中記錄的變化,使得數據文件向前滾到一個SCN值或者一個時間點。
3)在對資料庫進行還原恢復操作時,可以先進行預覽:
restore database preview summary;
4)恢復整個資料庫:

startup force mount;----將資料庫至於mount狀態  restore database;----還原資料庫  recover database;----恢復資料庫  alter database open;

5)恢復表空間:

alter tablespace users offline;---- 將表空間涉及的數據文件離線  restore tablespace; ----還原表空間  recover tablespace; ----恢復表空間  alter tablespace users online; ----恢復完成後,再設為在線

6)對數據壞塊進行恢復:

recover corruption list;----修復所有的壞塊  recover datafile 1 block 33, 44 datafile 2 blocke 1 to 200;

PS:
壞塊會記錄到V$DATABASE_BLOCK_CORRUPTION視圖中,還會記錄在告警日誌和TRACE文件中,可以通過V$DIAG_INFO查看這些文件的位置,找到相關文件進行壞塊查看。
  
  

五、數據恢復建議器(data recovery advisor)

1)列出當前失敗並確定修複選項:oracle中失敗是指被Health Monitor監測到的數據損壞,例如邏輯或物理的數據塊損壞、數據文件丟失等;
2)監測到的失敗有不同的優先順序(critical、hight和low),還有狀態(open和closed);
3)通過list failure可以查看當前監測到的失敗,若在同一會話中執行advise failure命令,資料庫會列出手工和自動的修複選項以供選擇。
4)一般首先通過手工修復方式來進行修復,若手工修復不成功,再進行自動修復。
  
  

六、閃回資料庫技術

1)想使用閃回資料庫技術,需要先開啟閃回日誌功能。(閃回日誌只能存放在快速恢復區中,並且不會進行歸檔)
2)閃回資料庫不能用於介質恢復和修複數據文件的丟失。
3)閃回資料庫需要在mount狀態下進行。
4)命令:

shutdown immediate ;----調整至mount狀態  startup mount;  flashback database to scn 1526845;----閃回到過去的某時刻  flashback database to restore point before_points;  flashback database to timestamp to_date('20140510','yyyymmdd');  alter database read only;----將資料庫置為只讀狀態,進行驗證  shutdown immediate;----若閃回後滿足要求,啟動資料庫  startup mount;  alter database open resetlogs;

  
  

七、指令運行方式

1、單個執行:

RMAN>backup database;
  

2、批處理:

RMAN>run{  .......................  .......................  }

這種方式是最常使用的方式,特別對於後台執行。
好處是如果作業中任何一條命令執行失敗,則整個命令停止執行。
  

3、運行腳本:

1)[oracle@oracle ~]$ rman target / @backup_db.rman
2)RMAN> @backup_db.rman
3)RMAN> run { @backup_db.rman }
4)運行存儲在恢複目錄中的腳本(需要首先為rman 創建恢複目錄):
RMAN> run { execute script backup_whole_db };
[oracle@oracle ~]$rman cmdfile=backup_db.rman;