分享

RMAN中的备份保留策略

 曰出东海落西山 2015-11-02

1什么是备份保留策略

备份保留策略定义了哪些备份(文件/集)可以被保留并且保留多少时间(在RMAN repository中)。通常,DBA可以通过RMAN工具中的CONFIGURE RETENTION POLICY命令来创建一个固定的、自动的备份保留策略。当一个备份保策略在起作用时,RMAN会依照策略,将不再需要恢复的数据文件及控制文件的备份认为“过时”(OBSOLETE)。DBA可以通过RMAN工具下的REPORT OBSOLETE命令来查看过时的备份文件(集)并使用DELETE OBSOLETE命令来删除这些过时的备份文件(集)。

随着备份作业的时间推移,旧的备份会由于不再满足备份保留策略而变为过时OBSOLETE)。RMAN则可以将这些不再满足备份保留策略的备份文件标志出来,但是,通常情况下是不会自动去删除这些“过时”的备份文件(集)。DBA必须使用DELETE OBSOLETE命令去删除这些不再满足备份保留策略的文件。

但是,如果数据库配置了flash recovery are,数据库则可以在满足flash recovery area内部磁盘配额规则前提下,而自动的删除这些过时的备份文件(集)。flash recovery area磁盘配额规则不同于备份保留策略规则。但是数据库不会去删除那些在备份保留策略规则之内的备份文件(集)而满足flash recovery area的磁盘配额。

2术语介绍

OBSOLETE

“OBSOLETE”的备份,是基于DBA已定义好的备份保留策略。换言之,这些备份对于恢复而言是不需要的。

EXPIRED

一个“EXPIRED”备份,仅当RMAN执行CROSSCHECK命令并且没有找到对应的备份。


简单说来:“OBSOLETE”意味着不需要,而“EXPIRED”意味着找不到

3备份策略类型

Oracle提供两个互为排斥的选项来配置保留策略:REDUNDANCYRECOVERY WINDOW。如果DBA没有配置备份保留策略,那么默认的保留策略是REDUNDANCY 1

3.1、配置方法

  • 配置基于RECOVERY WINDOW的备份保留策略,可以通过以下命令实现:

    RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF x DAYS;

  • 配置基于REDUNDANCY的备份保留策略,可以通过以下命令实现:

    RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY x;

  • 当然,DBA也可以彻底地禁用备份保留策略,这意味着RMAN不会将任何备份认为是“OBSOLETE”。具体可以通过以下命令实现:

    RMAN> CONFIGURE RETENTION POLICY TO NONE;

3.2、RECOVERY WINDOW

一个RECOVERY WINDOW是当前时间顺序向前(历史)推至可恢复的时间点的这一段时间。假设是基于时间点的恢复,那么可恢复的时间点则是最早的时间。也就是说,可以执行介质恢复的最早(前)时间点。譬如,如果DBA配置RECOVERY WINDOW为一周,那么,这个窗口的时间必须从当前时间向前(历史)准确地扩展7天。以便于DBA能恢复及还原至该时间点。

示例:

A、 recovery window 配置为 7

B、数据库备份作业将每两周执行。在如下特定的时间:

# January 1
# January 14
# January 28

C、数据库运行在归档模式,归档日志文件在保留策略所需的前提下,尽可能的保留在磁盘中。

+ January 1 -----> Logseq 100 ----> BACKUP

+ January 7 -----> Logseq 250
+ January 14 -----> Logseq 500 ----> BACKUP
+ January 21 -----> Logseq 750
+ January 28 -----> Logseq 900 ----> BACKUP

假设当前的时间是123日,根据7天的保留策略,那么可恢复的时间点是在116日。因此,114日的备份,加上log seq#500850之间的归档日志需要用来恢复。log seq#早于500以及11日的备份会被认为是“OBSOLETE”,因为这些备份及日志在RECOVERY WINDOW定义的策略中不再需要用于恢复到某个时间点。

注意:

需要将RECOVERY WINDOW的值配置为小于或等于控制文件参数CONTROL_FILE_RECORD_KEEP_TIME。主要是防止历史的备份会被控制文件记录覆盖。针对CONTROL_FILE_RECORD_KEEP_TIME的参数设置,Oracle提供了如下一个公式:

retention period + level 0 backup interval +1

3.3、REDUNDANCY

一个基于冗余的备份保留策略指定每个数据文件必须保留多少份备份。例如:
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 2;

虽然RECOVERY WINDOW是最好的备份保留策略配置实践。但是,它可以使磁盘空间使用计划变得复杂。因为基于备份恢复窗口的备份策略下,需要保持的备份数量不是一个固定值,并且是依赖于备份调度作业。而使用备份冗余的策略是维护一个固定的备份数量(每个数据文件)。RECOVERY WINDOWREDUNDANCY这两种备份保留策略是互为排斥的。

  • 默认的备份保留策略是REDUNDANCY = 1

此外,如果保留策略配置为NONE,那么REPORT OBSOLETE或者DELETE OBSOLETE不会认为有备份OBSOLETE:

RMAN> CONFIGURE RETENTION POLICY TO NONE;

4批量删除OBSOLETE备份

运行REPORT OBSOLETE命令确定哪些备份在当前是OBSOLETE(基于备份保留策略)。

如果将备份保留策略配置为NONE,那么RMAN不会认为任何备份是“OBSOLETE”。因此,当你运行REPORT OBSOLETE而没有其它任何操作时,RMAN会发出一个错误。

REPORT OBSOLETE相伴的命令是DELETE OBSOLETE,该命令主要用于删除OBSOLETE状态的备份文件(集)。DBA可以周期性地运行DELETE OBSOLETE命令去删除“OBSOLETE”备份,以减少空间浪费。通常,可以通过专用的脚本或者在备份脚本中实现这一操作。

此外,可以在REPORT或者DELETE命令中附加REDUNDANCYRECOVERY WINDOW选项却覆盖默认配置的保留策略。

5保留策略中的例外

有些情况,可能需要存储一个周期很长的备份。这时间比保留策略定义的还长。譬如,需要对数据库在每年的第一天执行一次备份以满足一些管理需求。对于进行中的备份和恢复策略,这是一个独立的备份。

这类周期长的备份需要记录在RMAN资料库中,但是他们必须排除在保留策略之外,如果不这样做,RMAN会快速的认为这些备份是过时的,并且他们会在下一次DELETE OBSOLETE命令执行过程中被删除。

可以在执行备份时,通过BACKUP命令的KEEP选项,将一个备份排除在备份保留策略外。或者可以通过CHANGE命令的KEEP选项,对已经存在的备份文件排除在备份保留策略之外。注意:被排除在备份保留策略之外的备份依然是完全有效的备份。这类备份同其它备份一样可以用于恢复和还原操作。

DBA可以通过CHANGE…KEEP以及CHANGE…NOKEEP命令来改变备份是否在保留策略定义的范围之内。NOKEEP选项(默认选项)表明备份是受备份保留策略影响的。

此外,可以通过指定LOGS选项保存用于进行不完全恢复所使用的归档日志(周期长的备份)。当LOGS选项被指定,自保持的备份以来的所有日志都被保留。换句话说,KEEP UNTIL TIME…LOGS意味着RMAN将保留备份(被保留策略保持)以来所需的所有日志。如果指定NOLOGSRMAN不会保留需要从备份中进行恢复的日志。注意:如果在一个不一致的备份中,使用KEEP UNTIL TIME…命令,必须使用LOGS选项,或者当这些需要用于还原的的日志被标志为“OBSOLETE”状态而被删除后,这些备份将变为不可使用的。

可以通过UNTIL语法指定一个结束日期,或者指定备份保留为“FOREVER”.如果指定了UNTILRMAN在没有超过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 areaOBSOLETE状态确定的标准与磁盘配额规则(删除策略)之间,有一个重要的不同点。假设归档日志有序号为10002000,均在磁盘上,并且在当前生效的recovery windows策略上所需要(非OBSOLETE)。如果将这些日志备份到磁带,备份保留策略依旧认为这些日志还是需要,也就是说,不是OBSOLETE。然而,flash recovery are磁盘配额算法认为磁盘上的这些日志是可以删除的,因为它们已经备份到磁带中去了。RMAN资料库中的记录,磁盘中的这些日志并非是OBSOLETE状态,但是它们在flash recovery area中是可以被删除的。但是,请注意:备份保留策略是永远不会违反的,当确定flash recovery area中哪些文件是为了满足磁盘配额规则而需要删除。



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多