博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

rman备份的保留策略

Posted on 2019-11-27 10:31  myuserkill  阅读(2462)  评论(0编辑  收藏  举报

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中哪些文件是为了满足磁盘配额规则而需要删除。