1. Report 命令
用戶判斷數據庫的當前可恢復狀態和提供數據庫備份的特定信息
1.1 指定最近沒有備份的數據文件
查詢3天內沒有備份過的表空間,可以用如下命令:
RMAN> report need backup days=3;
1.2 報告備份冗余或恢復窗口
可以用report need backup redundancy 命令來確定為滿足備份冗余策略而需要備份的數據文件。
RMAN> report need backup redundancy =4;
RMAN> report need backup recovery window of 2 days;
1.3 報告數據文件的不可用恢復操作
如果對於表空間中對象和組成這些表空間的數據文件執行了某些不可恢復操作,那么會導致在恢復的時候出現異常,我們可以用report查看這些不可用的對象。
RMAN> report unrecoverable;
1.4 報告數據庫模式(Schema)
這里的Schema指的是數據庫的物理結構,包括數據文件名,數據文件號,為這些數據文件指派的表空間,數據文件的大小,以及數據文件是否含有回滾段。
RMAN> report schema;
2. Validate
2.1 效驗所有的數據文件和控制文件,如果使用spfile 文件,也會效驗。
RMAN> VALIDATE DATABASE; (11g 新特性)
2.2 驗證某一個備份集
RMAN> validate backupset 8;
2.3 validate 某一個數據塊
RMAN> VALIDATE DATAFILE 1 BLOCK 10;
3. BACKUP ... VALIDATE
backup…validate 命令做如下的效驗:
(1) 檢查數據文件是否存在物理或者邏輯的壞塊
(2) 檢查所有的數據文件是否都存在,並且存在正確的位置。
當運行backup validate時,RMAN 會按照正常的備份來讀取所有的數據文件。 但是RMAN 不會產生任何的backup sets 和 image copy。
當我們使用backup validate時,不能使用backupset,maxcorrupt,proxy參數。如果想要效驗某個指定的備份集,可以使用我們之前講的validate命令。
3.1如果我們想要效驗所有的數據文件和歸檔日志,可以運行如下命令: ( 只效驗物理的損壞 )
RMAN>backup validate database archivelog all;
3.2 既效驗物理的損壞,又效驗邏輯的壞塊
(注意: 如果加上了archivelog all,就必須要有歸檔文件存在,如果沒有歸檔文件,會報如下錯誤:rman-20242、rman-03002 )
RMAN>backup validate check logical database archivelog all;
4. List
4.1 查看 backupset 的編號
RMAN> list backup summary;
Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
36 B 0 A DISK 11-JUL-13 1 1 NO ORA11GR2_LEVEL0
37 B 0 A DISK 11-JUL-13 1 1 NO ORA11GR2_LEVEL0
39 B A A DISK 11-JUL-13 1 1 NO ARC_BAK
43 B F A DISK 11-JUL-13 1 1 NO TAG20130711T203435
KEY(關鍵字): 表示備份集序列號
TY(類型)和LV列表示列的備份類型:
B[Backup] 表示備份
F[Full] 表示完全備份
A[Archivelog]
0和1 表示增量備份[Incremental backup]
S 列說明備份的狀態: A 表示Available,X 表示Expired.
Device Type: 說明備份的設備是磁帶還是磁盤
4.2 按備份類型列出備份
列出數據文件備份,歸檔日志備份,控制文件和spfile文件備份列出備份信息。
RMAN> list backup by file;
RMAN> list backup of controlfile;
RMAN> list backup of spfile;
4.3 列出到期的備份
RMAN> list expired backup;
RMAN> list expired backup of archivelog all;
4.4 按表空間名和數據文件號列出備份
RMAN> list backup of tablespace users;
RMAN> list backup of datafile 3;
4.5 列出歸檔日志備份
4.5.1 查看當前存在的歸檔日志(並不意味着它們已經備份)
RMAN> list archivelog all;
4.5.2 列出歸檔日志備份
RMAN> list backup of archivelog all;
4.5.2 列出備份中過期的歸檔
RMAN> list expired backup of archivelog all;
設定時間或日志序列號來限制報告中顯示的內容,如:
RMAN> list expired backup of archivelog until sequence 3;
RMAN> list expired backup of archivelog until time "to_date('2013-4-1','yyyy-mm-dd')";
4.6 列出incarnation
RMAN> list incarnation;
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 ORCL 1388303183 PARENT 1 15-AUG-09
2 2 ORCL 1388303183 PARENT 945184 09-OCT-14
3 3 ORCL 1388303183 ORPHAN 2000932 11-DEC-14
。。。
7 7 ORCL 1388303183 CURRENT 3450137 12-MAR-15
Status 列:該列列出的是incarnation的狀態 (下面是幾個狀態值的含義)
Parent:表明對應物是非當前的incarnation
Current:當前的incarnation
ORPHAN:孤立的incarnation, 即在resetlogs命令之后進行恢復
重置SCN(Reset SCN)和重置時間(Reset Time):
說明創建數據庫incarnation的時間,這也是第一個條目的Reset SCN為1的原因。 該列對使用resetlogs命令進行恢復有用,並使得能較容易的恢復到前面的incarnation。
注意一點:
使用恢復目錄和不使用恢復目錄這里的輸出在Inc Key 上有差異。
5. crosscheck
5.1檢查備份集和實際的文件
備份集有兩種狀態:
A(Available,RMAN認為該項存在於備份介質上),
X(Expired,備份存在於控制文件或恢復目錄中,但是並沒有物理存在於備份介質上)
說明:當設置備份保存策略后,一個備份過期,crosscheck之后標記為丟棄的備份狀態依舊為availabel。備份策略不會刪除過期的備份集,可以使用report obsolete命令查看過期的備份,delete obsolete 命令刪除過期的備份。
5.2 交叉驗證歸檔日志示例:
RMAN> crosscheck archivelog all;
補充:假如我們在oracle數據庫在遷移當中不小心丟失了一個歸檔文件, 此時RMAN 會因為缺少歸檔日志而不能完成備份
解決方法,執行下面2條命令即可: (原理是datafiles都存在,而歸檔都是記錄已經commit的事務,所以數據庫是一致的)
RMAN>crosscheck archivelog all; -- 檢查控制文件和實際物理文件的差別
RMAN>delete expired archivelog all; -- 同步控制文件的信息和實際物理文件的信息
6. delete
Rman備份中obsolete和expired的區別
obsolete:與retention policy相關,當備份或者副本根據保存策略而被丟棄的時候,就會被標記為該狀態。
expired:使用crosscheck對備份進行校驗,當備份或者副本被存儲在rman目錄中,但是並沒有物理存在於備份介質上時,就會被標記為該狀態;在操作系統層刪除備份集后,用crosscheck 檢測后就標志為X(expired)。通常指丟失(被刪除)的備份。
Delete expired;
Delete obsolete;
7. RESTORE…VALIDATE
RESTORE…VALIDATE命令可以效驗備份集中的某個特殊的datafile 或者backupset 能否用來進行restore操作。
必須在數據庫mounted 狀態或者open狀態才可以使用該命令。 當我們效驗數據文件時,不需要將datafiles offline。 因為我們效驗數據文件時,僅僅從備份集中讀取,不會影響生產環境中的數據文件。當我們效驗的文件存在磁盤或者磁帶上, RMAN 會讀取備份片或者image copy中的所有blocks, 以驗證這些備份片能否用來進行一個真實的restore操作。
7.1 效驗整個數據庫和所有歸檔的命令:
restore controlfile validate;
restore spfile validate;
RESTORE DATABASE VALIDATE;
RESTORE ARCHIVELOG ALL VALIDATE;
--如果出現類似如下的錯誤,就表示這個備份集不能夠用來進行恢復:
RMAN-06026: some targets not found - aborting restore
The following sample output shows that RMAN encountered a problem reading the specified backup:
RMAN-03009: failure of restore command on c1 channel at 12-DEC-06 23:22:30
ORA-19505: failed to identify file "oracle/dbs/1fafv9gl_1_1"
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
7.2 驗證spfile 有效性
RMAN> restore spfile validate;
7.3 驗證控制文件
RMAN> restore controlfile validate;
7.4 驗證歸檔有效性
RMAN> restore archivelog all validate;
7.5 單獨效驗某些歸檔文件:
RMAN> restore archivelog sequence 54 validate;
8 change
Change 命令允許用戶修改備份集的狀態。我們可能會遇到備份介質設備在某個時間段中無效的情況(如突然斷電)。這時,我們就可以使用change 命令來指示這個設備上的備份是不可用的。解決硬件故障和修復磁盤后,可以再次執行change 命令,將備份改為可用的狀態。
也可以將備份修改為不可用的狀態。在還原和恢復操作期間,不會考慮哪些不可用的備份,但在執行delete expired命令期間這些備份記錄不會被刪除。
RMAN> list backup summary;
RMAN> Change backupset 16 unavailable;
RMAN> list backup summary;
RMAN> Change backupset 16 available;