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