RMAN备份策略修正案例实录

背景:在给某客户处理问题时,发现客户数据库的备份空间即将用尽,进一步查看发现是用户数据库的当前RMAN备份策略存在潜在问题,需要修改备份策略。

环境:SunOS 5.10 + Oracle 11.2.0.3

1.分析当前RMAN备份策略的问题

2.拟出解决方案供客户选择

3.根据实际情况决定删除无用历史备份

4.总结

1.分析当前RMAN备份策略的问题 1.1 查看系统任务调度 -bash-3.2$ crontab -l 0 0 * * 0 /oradata03/backup/rman/db_full.sh > /dev/null 2&>1# 0 0 * * 1-6 /oradata03/backup/rman/db_level1.sh > /dev/null 2&>1#

可以看到,第一条是每周日凌晨0点执行/oradata03/backup/rman/db_full.sh脚本;
第二条是每周一~周六凌晨0点执行/oradata03/backup/rman/db_level1.sh脚本。
这部分中,调度本身是没有问题的。

1.2 查看任务调度脚本内容

查看/oradata03/backup/rman/db_full.sh脚本内容:

-bash-3.2$ more /oradata03/backup/rman/db_full.sh #/usr/bin/ksh #rman incremental backup level=0 ORACLE_BASE=/opt/app/oracle/ ORACLE_HOME=/opt/app/oracle/product/11.2.3 ORACLE_SID=xxoradb PATH=$ORACLE_HOME/bin:$PATH:. export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH (rman target / @/oradata03/backup/rman/db_full.rcv df -g )>/oradata03/backup/full_`date +%m%d%y`.log

查看/oradata03/backup/rman/db_level1.sh脚本内容:

-bash-3.2$ more /oradata03/backup/rman/db_level1.sh #/usr/bin/ksh #RMAN incremental backup level=1 ORACLE_BASE=/opt/app/oracle/ ORACLE_HOME=/opt/app/oracle/product/11.2.3 ORACLE_SID=xxoradb PATH=$ORACLE_HOME/bin:$PATH:. export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH (rman target / @/oradata03/backup/rman/db_level1.rcv df -g )>/oradata03/backup/weekly_level1_`date +%m%d%y`.log

这部分中,脚本本身是没有问题的。

1.3 查看上面2个脚本中的嵌套内容

查看/oradata03/backup/rman/db_full.sh脚本内容中嵌套的/oradata03/backup/rman/db_full.rcv内容:

-bash-3.2$ more /oradata03/backup/rman/db_full.rcv run{ backup format '/oradata03/backup/full_%s_%p_%t.bak' database plus archivelog delete input; crosscheck backup; delete noprompt expired backup; delete noprompt obsolete; }

查看/oradata03/backup/rman/db_level1.sh脚本内容中嵌套的/oradata03/backup/rman/db_level1.rcv内容:

-bash-3.2$ more /oradata03/backup/rman/db_level1.rcv run{ backup incremental level=1 format '/oradata03/backup/level1_%s_%p_%t.bak' database plus archivelog delete input; }

这部分产生第1个疑问:db_full.rcv里面的内容是普通的数据库全备+归档,而db_level1.rcv里面内容是1级增量+归档。
我们知道,1级增量备份依据的是0级增量备份,而这里的普通数据库全备是不能作为1级增量备份的基础的,
所以,第一想法是这里面的1级增量备份是没有必要的,白白浪费了系统资源和备份的磁盘空间。
而有意思的是,我实际在测试环境测试发现:如果只做1级增量备份,没有做0级增量的话,那么Oracle会默认第一次先做0级增量。以保证备份的有效性。
不过还是建议能够显性的指定到底是0级增量还是1级增量,不然会给管理维护带来不必要的困扰。具体参照本文第二部分。

1.4 查看RMAN保留策略相关

查看RETENTION POLICY:

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 15 DAYS;

查看control_file_record_keep_time参数:

SQL> show parameter control_file_record_keep_time NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_file_record_keep_time integer 7

这部分产生第2个疑问:control_file_record_keep_time参数是默认值7天,而RECOVERY WINDOW是15天,这样有可能导致备份信息条目丢失,建议设置control_file_record_keep_time值=RECOVERY WINDOW + 1. 这里就是16.
有关这个control_file_record_keep_time参数设置什么值最合适,网上说法不一,我专门咨询了maclean大神,回复是

一般设置为 CONTROL_FILE_RECORD_KEEP_TIME = recovery window+1 即可
实际 控制文件记录的覆盖 和 recovery window没有直接的关系,所以不用过度担忧。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/12c73faf8e680c9fc76ff1614ec87da3.html