千家信息网

利用SHELL脚本来验证Oracle数据库RMAN备份集的有效性

发表于:2024-12-13 作者:千家信息网编辑
千家信息网最后更新 2024年12月13日,利用SHELL脚本来验证Oracle数据库RMAN备份集的有效性作者:赵全文 网名:guestart我们生产环境的Oracle数据库都做了RMAN备份,是采用了一周的RMAN备份保留策略;除了使用RM
千家信息网最后更新 2024年12月13日利用SHELL脚本来验证Oracle数据库RMAN备份集的有效性

利用SHELL脚本来验证Oracle数据库RMAN备份集的有效性

作者:赵全文 网名:guestart

我们生产环境的Oracle数据库都做了RMAN备份,是采用了一周的RMAN备份保留策略;除了使用RMAN备份以外,我们还使用了爱数(Eisoo)备份软件来进行备份,可以说是做到了有备无患。可是,如果有一天,Oracle数据库由于主机层面硬件原因或是数据库层面的原因不能对外提供高可用服务的时候,假设数据丢了一大部分,我们只有用RMAN备份来进行恢复,再如果发现,RMAN备份失效了,那就往地缝里钻和哭晕在厕所都于事无补了。

为了防止这一幕的出现,就需要对Oracle数据库RMAN备份集的有效性进行验证。为此,我专门写了一个SHELL脚本用来验证RMAN备份集的有效性,将该脚本文件放在了crontab的计划任务里,让其在每天晚上21点自动运行,目的是验证前一天生成的RMAN备份集的有效性。

现在,用线上的一套Oracle数据库生产环境,来演示操作。

首先,查看最近的一次RMAN全备,如下图所示,

接下来,查看一下生成的校验RMAN备份集有效性的LOG文件,见下图,

我们就以查看201733日生成的LOG文件为例,下面是执行SHELL脚本验证的结果,见下图所示,

截图一,

我们发现,上面首先校验的是32日生成的增量备份里的归档日志备份集,

截图二,

紧接着,是校验增量1级备份生成的备份集和最后手动归档以及备份的归档日志备份集,

截图三,

由于在RMAN的参数设置中开启了控制文件的自动备份功能,所以最后备份的是控制文件,那么最后校验的也是控制文件了,嘿嘿!

俗话说的好,"工欲善其事,必先利其器"!最后着重介绍一下,rman_validate_v2.sh 这个验证RMAN备份集有效性的SHELL脚本的具体内容,

由于脚本内容过多,下面分三个部分来说明,见图1

依次解释一下,几个红色方框标注的地方,

(1)个人简介,包括姓名,Emai邮箱,技术博客网址;

(2) SHELL脚本文件名;

(3) 最近修改日期;

(4)SH脚本使用的注意事项,当然是先确保在测试环境上测试通过以后,在放到生产环境中使用啦。

见图2

2,有3红色方框,方框1是定义在脚本中要使用的SHELL外部命令所在的绝对路径,每种Linux操作系统上所在的路径有可能不同,尽量要使用"which 想要使用的命令名"来查找一下,然后写到上面,通常把要使用的都要写上去;方框2是定义了一些有关路径的字符串变量和普通字符串变量以及SHELL命令用一对反引号(键盘上ESC键下面和数字1键左边的那个键)括起来的字符串变量(注意:只有用反引号括起来才能生成SHELL命令的执行结果);方框3是使用SQLPLUS命令连接到Oracle数据库以后,通过查询视图V$BACKUP_SET_DETAILS来找出前一天生成的RMAN备份集当中所有的BS_KEY值,然后保存到一个字符串变量BSKEY_LIST

见图3

32红色方框需要特别说明,方框1是通过强大AWK命令将字符串变量BSKEY_LIST的值"6046 6047 6048 6049 6050 6051 6052"的中间加一个逗号(所以我把方框1的字符串变量命名为BSKEY_LIST_WITH_COMMA,意即带逗号的BSKEY_LIST),形如这种格式,"6046,6047,6048,6049,6050,6051,6052";方框2是在最后进入RMAN命令行,校验RMAN备份集有效性的语句,validate backupset 后面紧跟的就是带逗号的BS_KEY值列表,形如这种格式,"validate backupset6046,6047,6048,6049,6050,6051,6052 check logical;"其实,也可以使用一个FOR环来将字符串变量BSKEY_LIST的值一个一个读出,然后执行一次validate backupset 6046 check logical;再取一个值,再执行一次validatebackupset 6047 check logical;直到都把字符变量BSKEY_LIST的值取完为止,那样的话,就不用定义前面那个字符串变量BSKEY_LIST_WITH_COMMA了。看个人喜好,我觉得带逗号这种方式,个人比较喜欢和推荐使用。

我把rman_validate_v2.sh这个脚本放在了GitHub上,网址为

https://github.com/guestart/rman_validate/blob/master/rman_validate_v2.sh,如果需要下载即可。




如您觉得此篇文章对您有帮助,欢迎关注微信公众号:guestartDBA学习笔记,您的支持是对我最大的鼓励!

备份 脚本 变量 字符 方框 数据 字符串 有效 数据库 有效性 命令 文件 生成 验证 环境 逗号 个人 截图 红色 路径 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 云服务器一定要数据库吗 互联网金融的科技自立与向善 dl580g服务器指示灯 服务器如何配置地址映射 贵州水投水务工控网络安全 360服务器安全防护措施 db2数据库建新架构 软件开发资源投入包括哪些 贵州网络安全竟 网络安全的规矩 如何用github服务器 软件开发小教学 国产arm服务器cpu 上传认证显示服务器异常什么意思 硕士嵌入式软件开发师工资 文件共享服务器怎么查看文件日志 网络安全大赛开场视频 折叠式笔记本电脑软件开发 程序数据库有过时的格式是啥意思 有大型服务器的公司有哪些 数据库怎么实现不可复制粘贴 石家庄软件开发销售价格 有没有软件开发的网站 陕西省网络安全实验室怎么样 淘宝软件开发工程师 数据库校对集和排序规则 服务器锁插件 广东九合网络技术有限公司 药智网数据库查询 图书馆运用的数据库技术有哪些
0