關于RMAN備份和恢復的10個實踐
圖片來自包圖網
本文檔假設您正在執行基本的備份和恢復
- - 在 Archivelog 模式下運行
- - 多路鏡像控制文件
- - 定期執行備份
- - 周期性執行全庫恢復測試
1開啟塊檢查
這樣做的目標是盡早發現數據庫中的壞塊。這只會占用很少的性能開銷,但卻可以讓 Oracle 盡早檢測出由底層磁盤、存儲系統、或 I/O 系統問題導致的壞塊。
- SQL> alter system set db_block_checking = true scope=both;
2使用 RMAN 增量備份時開啟塊更改跟蹤(Block Change Tracking)功能
更改跟蹤文件包含了可以使 RMAN 增量備份進程避免讀取自上次備份以來未修改的數據所需要的信息。如果不使用塊更改跟蹤功能,則必須讀取所有塊來確定自上次備份以來是否對其進行了修改。
- SQL> alter database enable block change tracking using file '/u01/oradata/ora1/change_tracking.f';
3鏡像 重做日志組和成員,并將歸檔日志存放在多個目標位置
通過在多個位置存放多個副本,當某個歸檔日志損壞或丟失時,其他日志仍然存在并可以使用。
如果某個在線日志被刪除或損壞,在需要時還可以使用其他成員進行恢復。
- SQL> alter system set log_archive_dest_2='location=/new/location/archive2' scope=both;
- SQL> alter database add logfile member '/new/location/redo21.log' to group 1;
4使用 RMAN 備份數據庫時使用 CHECK LOGICAL 選項
這可以使 RMAN 對數據塊除了進行常規的校驗和驗證之外,還檢查塊內的邏輯損壞。這是確保您獲得完好備份的最佳方法。
- RMAN> backup check logical database plus archivelog delete input;
5測試備份
這將執行除實際回復(restore)數據庫之外的所有操作。要確定在出現問題(此時備份非常重要)之前備份是否完好以及可用,這是最好的辦法。
如果使用 RMAN,可以使用以下命令執行此操作:
- RMAN> restore validate database;
6使用 RMAN 時,將每個數據文件存放在單獨的備份片(backup piece)中
執行部分恢復時,RMAN 必須讀取完整的備份片以獲取需要的數據文件/歸檔日志。因此,備份片越小,恢復完成的速度越快。這尤其適用于對大型數據庫進行的磁帶備份或僅對單個/少數幾個文件進行的恢復。
然而,如果 filesperset 的值很小,也會導致創建更多的備份片,因而會降低備份性能并增加維護操作時間。因此必須根據所需的恢復時間要求對這些因素加以權衡。
- RMAN> backup database filesperset 1 plus archivelog delete input;
7維護 RMAN 目錄(catalog)/控制文件
認真選擇保留策略(retention policy)。確保它可以滿足磁帶保留策略以及備份恢復策略的要求。如果未使用目錄,確保 CONTROL_FILE_RECORD_KEEP_TIME 參數與保留策略匹配。
- SQL> alter system set control_file_record_keep_time=21 scope=both;
這會將備份記錄在控制文件中保留 21 天。
定期運行以下目錄維護命令。
原因:Delete obsolete 將刪除保留策略以外的備份。
如果過期的備份未刪除,則目錄將不斷增長,直至出現性能問題。
- RMAN> delete obsolete;
原因:crosschecking 將檢查目錄/控制文件是否與物理備份匹配。
如果某個備份丟失,此命令會將該備份片 設為“EXPIRED”,在開始恢復時,將不使用這個備份,而使用更早的備份。要刪除目錄/控制文件中已過期的備份,請使用 delete expired 命令。
- RMAN> crosscheck backup;
- RMAN> delete expired backup;
8為控制文件丟失做準備
這將確保您始終能夠擁有最新的控制文件,控制文件備份在當前備份結束時執行,而不是在備份期間。
- RMAN> configure controlfile autobackup on;
保留備份日志
原因:備份日志包含了磁帶存取的參數、控制文件備份的位置,如果所有文件都丟失了,則可以利用該日志。
9測試恢復
原因:在需要執行恢復的時候,您可以不實際執行恢復就知道恢復流程是如何操作的,并可避免再次回復數據文件。
- SQL> recover database test;
10使用RMAN 備份時,在備份歸檔日志時不要指定“delete all input”
原因:“delete all input”在備份一個歸檔目錄下的歸檔日志后,會刪除該歸檔日志在不同歸檔目錄下的所有副本,而“delete input”在備份一個歸檔目錄下的歸檔日志后,僅刪除該目錄下的歸檔日志,下一次備份將備份歸檔目錄 2 下的日志以及歸檔目錄 1 的新日志,然后刪除所有備份過的日志。這意味著您將保留自最后一次備份以來在歸檔目錄2 下可用的歸檔日志(包括曾備份的日志)以及上次備份之前備份的兩份副本。