什麼是備份的保留策略(retention policy)
保留策略就是指某份備份是否要保留以及保留多久。可以使用configure retention policy命令來創建一個一致的、自動的備份保留策略。 當一個備份策略生效後,rman就認為數據文件、控制文件的備份是obsolete的,也就是說根據用戶配置,不再需要這些備份進行恢復。用戶可以使用report obsolete命令找出obsolete的文件並使用delete obsolete將其刪除。
隨著備份次數的增加,老的備份文件會變得obsolete。rman可以標識出obsolete的文件,但是不會自動刪除它們。需要用戶手動執行delete obsolete將其刪除。
如果數據庫配置了快速閃回區,數據庫會根據快速閃回區磁盤quota規則自動刪除閃回區內的文件。閃回區的quota規則跟rman備份策略規則是不同的,但是閃回區不會刪除沒有超過備份策略的備份文件。
obsolete和expired是兩個不同的概念
備份是否obsolete,是由備份策略決定的,是指超過了備份策略的限制,在恢復的時候不再需要的文件;expired是指rman在執行crosscheck檢查的時候,找不到這些文件。一句話,obsolete是指"不再需要",expired是指"找不到"。
保留策略是針對數據文件和控制文件的full備份或level 0備份(不管是datafile image copy, a proxy copy, or part of a backup set)。對於datafile copies和proxy copies,如果rman認為其不再被需要就可以刪除。對於備份集中的datafile備份,只有整個備份集都變成obsolete後才可以被刪除。
備份策略除了對數據文件和控制文件的full和level 0備份有效外,還會影響歸檔日志和level 1增量備份。首先rman檢測出那些數據文件、控制文件備份是obsolete的,然後rman會將那些恢復時候不再需要的歸檔日志、level 1增量備份認為是obsolete的。
report obsolete和delete obsolete命令是如何起作用的:
主要分為兩步
(1)首先,對於full backup、datafile copy和level 0的增量備份,rman會根據retention policy識別出哪些是obsolete的。
(2)然後,對於歸檔日志和level 1的增量備份,如果其對應的full backup、datafile copy和level 0的增量備份已經是obsolete的,也會被認為是obsolete的,因為已經不再需要它們進行數據恢復。
NOTE: A 'delete obsolete' does not check that the archivelog files have been backed up before it deletes them.
保留備份策略的類型:(有兩種備份類型)
(1)redundancy(冗余):默認是冗余
rman> configure retention policy to redundancy x;
(2)recovery window(恢復窗口)
rman> configure retention policy to recovery window of x days;
配置恢復窗口期的時候,時間應該不大於參數control_file_record_keep_time 的值。
取消備份策略:(永不將備份置為obsolete)
rman> configure retention policy to none;
如何讓備份不受備份策略影響:
用戶可能有長期保留數據備份的需求(超出rmand的保留策略設置)。這些備份信息應該被記錄在rman repository中,但是應該超出rman備份保留策略的限制,否則會被標識為obsolete的。
可以在備份時使用keep關鍵字、或者備份後使用change...keep來實現。
對於歸檔日志可以使用logs關鍵字,這樣就不會在超過保留策略後被標識為obsolete的
示例:
# creates a backup and exempts it from retention policy until last day of 2007 rman> backup database keep until time "to_date('31-dec-2007', 'dd-mon-yyyy')" nologs; # specifies that backupset 2 is no longer exempt from the retention policy rman> change backupset 2 nokeep; # creates a backup that is indefinitely exempt from the retention policy rman> backup tablespace users keep forever nologs;