RMAN保留策略关乎数据的完整性,因此事关重大,由用户定义的、基于用户数据恢复所能承受的容忍度来设置。也就是说根据恢复的需要,用户需要保留几天的数据,或者说用户需要备份的保留几个副本,或者不需要设定保留策略。在生产环境中多数使用的是基于恢复窗口的保留策略,因此需要重点关注与理解其用法。最本文主要描述了RMAN下的三种保留策略方式。
1、什么是备份保留策略
也就是说备份可以保留多久,需要保留多久的问题,我们可以通过configure retention policy 来进行配置
注意,保留策略是相对于恢复而言,也就是说根据恢复的需要来制定保留策略,比如需要恢复到3天以前,或是保留2个不同的副本
Oracle支持三种保留策略,一个是基于恢复窗口的保留策略,一个是基于冗余的保留策略。一个是无保留策略,三种保留策略互斥,不可同时使用
当备份保留策略启用后,已生成的备份满足保留策略之后,会被标记为过时,也就是说RMAN认为恢复已经不再需要用到这些备份
可以通过report obsolete来查看当前数据库的过时的备份。以及使用delete obsolete来删除过时的备份
对于过时的备份(备份集,镜像副本等),在未使用FRA的情形下,RMAN仅仅是对其加以标注,而不会真正删除这些过时的备份
对于使用了FRA(闪回区)的情形,RMAN会自动地删除这些过时的备份以循环利用FRA空间。
注意理解无效的备份或过时的备份,前者执行crosscheck之后,文件没有找到(被删除),后者指文件存在,但是根据保留策略恢复已不再需要用到
保留策略的使用范围
完全备份、level 0、控制文件备份
对于数据文件镜像副本(copy方式),如果RMAN认为该副本不再需要,则可以被删除
对于数据文件备份集,当在备份集内所有的数据文件为过时时,可以被删除
2、基于恢复窗口的保留策略
该方式用于确保将数据库恢复到特定的时间点。比如需要恢复一周以内的数据,使用恢复窗口RECOVERY WINDOW OF 7 DAYS
那么所有与恢复到最近7天的完全备份、增量备份、归档日志,都应当被保留,而且有可能7天以前的备份也需要保留
比如系统中完整地备份是8天以前的,即便当前产生了新的完整备份,上次的完整备份也应当被保留,而不是说只要过了7天这些备份就不再需要
配置恢复窗口保留策略:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
对于上述配置,每一个数据文件、备份应当满足这个条件:SYSDATE - BACKUP CHECKPOINT TIME >= 7,在这之前的备份则是无效的。
下面的恢复窗口分析示例图来自Backup and Recovery User's Guide
恢复窗口分析示例1:
恢复窗口为7天,数据库处于归档模式
备份计划是每两周一次全备,分别是: January 1,January 15,January 29,February 12
对于图中的情形,当前的时间点Jan 23,那么7天的恢复窗口则是Jan 16,要能够确保数据可以恢复到Jan 16,
那么Jan 14的备份及archive log 500到log 850都应当被保留,Jan 1的备份是过时的
恢复窗口分析示例2:
当前的时间位Jan 30,那么7天的恢复窗口是Jan 23,确保Jan 23可恢复则应当自上一次完整备份到Jan 23的archive log可用。
即Jan 14的完整备份必须被保留,log 500到log 1150都必须全部被保留
3、基于冗余的保留策略
基于冗余的保留策略是依据你的备份数,而不是备份天数。该策略是默认的保留策略,被设置为1。
如果将其设置为2,那么Oralce则会为当前备份保留2个副本,其余的、时间更早的副本会全部被标记为过时的备份。
4、无保留策略
无保留策略也就是禁用保留策略,不使用任何保留策略。
配置无保留策略: configure retention policy to none
恢复到缺省保留策略:configure retention policy clear
5、相关演示
RMAN> show retention policy; RMAN configuration parameters for database with db_unique_name USBO are: CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default RMAN> report obsolete; RMAN retention policy will be applied to the command RMAN retention policy is set to redundancy 1 Report of obsolete backups and copies Type Key Completion Time Filename/Handle -------------------- ------ ------------------ -------------------- Datafile Copy 1 2013/11/11 15:21:04 /u03/database/usbo/fr_area/USBO/datafile/o1_mf_users_9811c028_.dbf --Author : Leshami --Blog : http://blog.csdn.net/leshami RMAN> configure RETENTION POLICY TO recovery window of 2 days; new RMAN configuration parameters: CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS; new RMAN configuration parameters are successfully stored RMAN> show retention policy; RMAN configuration parameters for database with db_unique_name USBO are: CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS; RMAN> list copy; specification does not match any control file copy in the repository List of Datafile Copies ======================= Key File S Completion Time Ckp SCN Ckp Time ------- ---- - ------------------- ---------- ------------------- 2 4 A 2013/11/11 15:21:16 3039347 2013/11/11 15:21:16 Name: /u03/database/usbo/fr_area/USBO/datafile/o1_mf_users_9811cddk_.dbf Tag: TAG20131111T152116 1 4 A 2013/11/11 15:21:04 3039328 2013/11/11 15:21:04 Name: /u03/database/usbo/fr_area/USBO/datafile/o1_mf_users_9811c028_.dbf Tag: TAG20131111T152103 RMAN> report obsolete; RMAN retention policy will be applied to the command RMAN retention policy is set to recovery window of 2 days no obsolete backups found RMAN> configure retention policy to none; old RMAN configuration parameters: CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS; new RMAN configuration parameters: CONFIGURE RETENTION POLICY TO NONE; new RMAN configuration parameters are successfully stored RMAN> show retention policy; RMAN configuration parameters for database with db_unique_name USBO are: CONFIGURE RETENTION POLICY TO NONE; RMAN> configure retention policy clear; old RMAN configuration parameters: CONFIGURE RETENTION POLICY TO NONE; RMAN configuration parameters are successfully reset to default value RMAN> show retention policy; RMAN configuration parameters for database with db_unique_name USBO are: CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
更多参考
有关Oracle RAC请参考
使用crs_setperm修改RAC资源的所有者及权限 使用crs_profile管理RAC资源配置文件 RAC 数据库的启动与关闭 再说 Oracle RAC services Services in Oracle Database 10g Migrate datbase from single instance to Oracle RAC Oracle RAC 连接到指定实例 Oracle RAC 负载均衡测试(结合服务器端与客户端) Oracle RAC 服务器端连接负载均衡(Load Balance) Oracle RAC 客户端连接负载均衡(Load Balance) ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)
ORACLE RAC 监听配置 (listener.ora tnsnames.ora) 配置 RAC 负载均衡与故障转移 CRS-1006 , CRS-0215 故障一例
基于Linux (RHEL 5.5) 安装Oracle 10g RAC
使用 runcluvfy 校验Oracle RAC安装环境
有关Oracle 网络配置相关基础以及概念性的问题请参考:
配置非默认端口的动态服务注册
配置sqlnet.ora限制IP访问Oracle Oracle 监听器日志配置与管理
设置 Oracle 监听器密码(LISTENER) 配置ORACLE 客户端连接到数据库
有关基于用户管理的备份和备份恢复的概念请参考
Oracle 冷备份 Oracle 热备份 Oracle 备份恢复概念 Oracle 实例恢复 Oracle 基于用户管理恢复的处理 SYSTEM 表空间管理及备份恢复 SYSAUX表空间管理及恢复 Oracle 基于备份控制文件的恢复(unsing backup controlfile)
有关RMAN的备份恢复与管理请参考
RMAN 概述及其体系结构 RMAN 配置、监控与管理 RMAN 备份详解 RMAN 还原与恢复 RMAN catalog 的创建和使用 基于catalog 创建RMAN存储脚本 基于catalog 的RMAN 备份与恢复 RMAN 备份路径困惑 使用RMAN实现异机备份恢复(WIN平台) 使用RMAN迁移文件系统数据库到ASM linux 下RMAN备份shell脚本 使用RMAN迁移数据库到异机
有关ORACLE体系结构请参考
Oracle 表空间与数据文件 Oracle 密码文件 Oracle 参数文件 Oracle 联机重做日志文件(ONLINE LOG FILE) Oracle 控制文件(CONTROLFILE) Oracle 归档日志 Oracle 回滚(ROLLBACK)和撤销(UNDO) Oracle 数据库实例启动关闭过程 Oracle 10g SGA 的自动化管理 Oracle 实例和Oracle数据库(Oracle体系结构)