RMAN備份的保留策略設置了保留備份的時間,有兩種互斥的方法:
·恢復時間窗
·備份文件(冗余)
1.恢復時間窗:
SQL>configure retention policy to recovery windows of 5 days;
恢復時間窗時間為5天,則rman就會保留5天內所有的rman備份操作的數據文件和歸檔重做日志的備份,不管5天內你用rman備份了多少次,都會保留下來,你就可以恢復到5天內任意備份點,一旦超過了5天,則該備份文件就會被標記為廢棄文件,可能被刪除。
2.備份文件(冗余)
SQL>configure retention policy to redundancy 2;
冗余度設置為2,就會保留最近2次的rman備份操作,其余的都標記為廢棄文件。(常用)
3.oracle通常只是將將不符合保留策略的備份文件標記為過時或者廢棄,但不會自己刪除它,還是得管理員手動用命令刪除,但是如果數據庫配置了flash recovery area,數據庫則可以在滿足flash recovery area內部磁盤配額規則的前提下去自動的刪除這些過時的備份文件,但是不會刪除那些在備份保留策略規則之內的備份文件(集)而滿足flash recovery area的磁盤配額。
4.命令
1).基於recovery windows的備份保留策略
SQL>configure retention policy to recovery windows of 5 days;
2).基於redundancy的保留策略
SQL>configure retention policy to redundancy 2;
3).dba禁用備份保留策略,備份文件都是有效的
SQL>configure retention policy to none;
4).查看過時的備份文件
SQL>report obsolete
5).刪除過時的備份文件
SQL>delete obslete
6).恢復默認保留策略
SQL>configure retention policy clear;
##注意:恢復時間長模式下,需要將recovery windows的值配置為小於或等於control_file_record_keep_time.主要是防止歷史的備份會被控制文件記錄覆蓋,oracle提供了計算公式:retention period + level 0 backup interval +1
有些情況,可能需要存儲一個周期很長的備份。這時間比保留策略定義的還長。譬如,需要對數據庫在每年的第一天執行一次備份以滿足一些管理需求。對於進行中的備份和恢復策略,這是一個獨立的備份。
這類周期長的備份需要記錄在RMAN資料庫中,但是他們必須排除在保留策略之外,如果不這樣做,RMAN會快速的認為這些備份是“過時”的,並且他們會在下一次DELETE OBSOLETE命令執行過程中被刪除。
可以在執行備份時,通過BACKUP命令的KEEP選項,將一個備份排除在備份保留策略外。或者可以通過CHANGE命令的KEEP選項,對已經存在的備份文件排除在備份保留策略之外。注意:被排除在備份保留策略之外的備份依然是完全有效的備份。這類備份同其它備份一樣可以用於恢復和還原操作。
DBA可以通過CHANGE…KEEP以及CHANGE…NOKEEP命令來改變備份是否在保留策略定義的范圍之內。NOKEEP選項(默認選項)表明備份是受備份保留策略影響的。
此外,可以通過指定LOGS選項保存用於進行不完全恢復所使用的歸檔日志(周期長的備份)。當LOGS選項被指定,自保持的備份以來的所有日志都被保留。換句話說,KEEP UNTIL TIME…LOGS意味着RMAN將保留備份(被保留策略保持)以來所需的所有日志。如果指定NOLOGS,RMAN不會保留需要從備份中進行恢復的日志。注意:如果在一個不一致的備份中,使用KEEP UNTIL TIME…命令,必須使用LOGS選項,或者當這些需要用於還原的的日志被標志為“OBSOLETE”狀態而被刪除后,這些備份將變為不可使用的。
可以通過UNTIL語法指定一個結束日期,或者指定備份保留為“FOREVER”.如果指定了UNTIL,RMAN在沒有超過UNTIL定義的日期之前,是不會標記備份為“OBSOLETE”。注意,如果使用KEEP FOREVER時,是不能同時使用LOGS選項的,因為這將需要永遠的保持所有的redo log。
示例:
#1、創建一個備份,並將其排除在備份保留策略之外,直到2015年的最后一天。
RMAN> BACKUP DATABASE KEEP UNTIL TIME "TO_DATE('31-DEC-2015', 'dd-mon-yyyy')" NOLOGS;
#2、指定備份集 2不再排除在備份保留策略之外
RMAN> CHANGE BACKUPSET 2 NOKEEP;
#3、創建一個無限期地排除在備份保留策略之外的備份。
RMAN> BACKUP TABLESPACE users KEEP FOREVER NOLOGS;
6備份保留策略與FLA
RMAN狀態是否OBSOLETE,總是由備份保留策略所確定。譬如,如果數據庫備份在RMAN資料庫中定義是“OBSOLETE”,那是因為它不再需要用於恢復到RECOVERY WINDOW或者redundant定義的可恢復時間點上。
如果配置Flash recovery are,數據庫使用一個內部算法去選擇一些flash recovery area內的並不再需要滿足保留策略的文件。這類備份狀態為“OBSOLETE”,並且是符合滿足磁盤配額規則而需要刪除的。
在flash recovery area為OBSOLETE狀態確定的標准與磁盤配額規則(刪除策略)之間,有一個重要的不同點。假設歸檔日志有序號為1000到2000,均在磁盤上,並且在當前生效的recovery windows策略上所需要(非OBSOLETE)。如果將這些日志備份到磁帶,備份保留策略依舊認為這些日志還是需要,也就是說,不是OBSOLETE。然而,flash recovery are磁盤配額算法認為磁盤上的這些日志是可以刪除的,因為它們已經備份到磁帶中去了。RMAN資料庫中的記錄,磁盤中的這些日志並非是OBSOLETE狀態,但是它們在flash recovery area中是可以被刪除的。但是,請注意:備份保留策略是永遠不會違反的,當確定flash recovery area中哪些文件是為了滿足磁盤配額規則而需要刪除。