千家信息网

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

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

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

截图一,

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

截图二,

紧接着,是校验增量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,

图3有2个红色方框需要特别说明,方框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,如果需要下载即可。




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

备份 脚本 变量 字符 方框 数据 字符串 有效 数据库 有效性 命令 文件 生成 验证 环境 逗号 个人 截图 红色 路径 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司官网 上海致骋互联网科技 互联网前沿科技 互联网科技股有哪些 互联网科技创新服务 重庆互联网医院沙龙医盟信息科技 浙江互联网科技研学营 互联网科技公司实习生 洛阳昕诺飞互联网科技有限公司 科技大学互联网 科技赋能视角下互联网保险发展 黑科技 体验场景 互联网大会 互联网相关科技技术 富国互联网科技002692 互联网科技年终奖 互联网时代科技型公司的机会 版纳互联网科技选哪家 互联网金融运营模式中的金融科技 美国五大互联网科技公司市值多少 科技美学互联网 艺术 善班互联网科技 互联网科技股午盘股票涨跌 隆华科技工业互联网 深圳国际航运科技和互联网 彤创互联网科技有限公司 长沙茂晟互联网科技有限公司 风投北京互联网科技 云南互联网科技学费 上海互联网科技园景观 互联网 科技节活动 微视频大赛
0