编辑手记:一切都有可能而且将会发生故障。只有未雨绸缪才能防患未然。
作者简介:赵全文
就职于太极计算机股份有限公司,在 中央电化教育馆 做Oracle DBA的驻场运维工作。
作为一个DBA,要时刻记得,故障是绝对会发生的,只是迟早的问题。
我们生产环境的Oracle数据库都做了RMAN备份,是采用了一周的RMAN备份保留策略;除了使用RMAN备份以外,我们还使用了爱数(Eisoo)备份软件来进行备份,可以说是做到了有备无患。可是,如果有一天,Oracle数据库由于主机层面硬件原因或是数据库层面的原因不能对外提供高可用服务的时候,假设数据丢了一大部分,我们只有用RMAN备份来进行恢复,再如果发现,RMAN备份失效了,那就往地缝里钻和哭晕在厕所都于事无补了。
为了防止这一幕的出现,就需要对Oracle数据库RMAN备份集的有效性进行验证。为此,我专门写了一个SHELL脚本用来验证RMAN备份集的有效性,将该脚本文件放在了crontab的计划任务里,让其在每天晚上21点自动运行,目的是验证前一天生成的RMAN备份集的有效性。
现在,用线上的一套Oracle数据库生产环境,来演示操作。
首先,查看最近的一次RMAN全备,如下图所示,
接下来,查看一下生成的校验RMAN备份集有效性的LOG文件,见下图,
我们就以查看2017年3月3日生成的LOG文件为例,下面是执行SHELL脚本验证的结果,见下图所示,
截图一,
我们发现,上面首先校验的是3月2日生成的增量备份里的归档日志备份集。
截图二
紧接着,是校验增量1级备份生成的备份集和最后手动归档以及备份的归档日志备份集。
截图三
由于在RMAN的参数设置中开启了控制文件的自动备份功能,所以最后备份的是控制文件,那么最后校验的也是控制文件!
俗话说的好,“工欲善其事,必先利其器”!最后着重介绍一下,rman_validate_v2.sh 这个验证RMAN备份集有效性的SHELL脚本的具体内容,
由于脚本内容过多,下面分三个部分来说明,见下图。
截图一:
依次解释一下,几个红色方框标注的地方
截图2
图2,有3个红色方框,
截图3,
图3有2个红色方框需要特别说明:
我把rman_validate_v2.sh这个脚本放在了github上,网址为https://github.com/guestart/rman_validate/blob/master/rman_validate_v2.sh,如果需要下载即可。(原文链接直达)
备份的重要性,再强调都不为过。
最后,推荐我们以前发过的一篇文章作为勉励。