文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

RMAN duplicate恢复数据库报错RMAN-06054问题处理

2024-04-02 19:55

关注

        最近生产上要搞大动作,需要把生产库备份每天都恢复到另外一台机器上,进行测试。于是想到了用DUPLIDATE的方式,简单方便,前期配置好目录,然后一条命令就可以把库恢复出来。于是写了恢复脚本,也通过了测试,而且生产上使用一切正常。但一次需要在测试环境恢复数据库时,使用该脚本却报错RMAN-06054。奇怪的是同样的备份在生产上的另一个环境已经成功恢复了。下面来看看这个问题是怎么处理的。

        先看报错的图:RMAN duplicate恢复数据库报错RMAN-06054问题处理

        从报错来看需要找节点1序号为36615的归档,但当前库的归档编号已经到了30多万了,显然是要找很早之前的归档。于是到MOS去找duplicate RMAN-06054相关的文章,不是很多,而且还有说是BUG的,不会这么巧又遇到BUG了吧。但这个备份文件在其他环境是已经成功恢复了的,为什么到了这个环境就恢复不成功了呢。简单对比了两个恢复过程中的日志,发现报错的这次恢复日志与成功的日志有区别,出现了creating datafile的日志,感觉比较奇怪,但不知道是什么原因。结果这是一个关键点,如果直接从这个点去排查,可能很快就发现问题了,但就这个问题还是耗费了2天的时间。下图为区别:

RMAN duplicate恢复数据库报错RMAN-06054问题处理

            下面继续排查问题,既然DUPLICATE语句不能自动recover恢复数据,那尝试手动recover会是什么效果呢,看下图:

RMAN duplicate恢复数据库报错RMAN-06054问题处理

 RMAN duplicate恢复数据库报错RMAN-06054问题处理

        看来手动recover还是报错,要找sequence 36615的归档日志。recover不行那open reseglogs试试。这里劝各位,我这个是测试环境可以随意尝试,如果操作的是生产环境,请敬畏生产,防止事态进一步恶化。open reseglogs的结果仍然是报错:

RMAN duplicate恢复数据库报错RMAN-06054问题处理

查看备份文件中的归档日志的备份,sequence都是30多万根本没有报错要找的36615号归档,那这就是个结了,没有怎么恢复呢?

RMAN duplicate恢复数据库报错RMAN-06054问题处理

        恢复不成功怎么办呢?测试还等着库用呢,难道是DUPLICATE的BUG吗?还是“姿势”不对?重新再恢复一遍,结果等待两个小时后依然报同样的错。

        DUPLICATE恢复不成功,那我用传纺的方式手动restore recover的方式是不是就可以了呢?结果是理想很丰满,现实很骨感,依然同样报错。那问题在哪呢?

        静下心来想想,recover database想找很早以前的归档日志,是不是备份文件出了问题,进而导致恢复出的文件有问题?于是使用validate把备份文件又验证了一下,结果是没有问题。那是不是传输过程中出了问题呢?对两边机器上的文件做了md5校验,结果是两边的文件又是一致的。那问题到底出在了哪呢?

        突然想到可以通过查询数据字典查文件的scn号,通过这个是不是可以找到问题的答案呢?我们来看一下查询结果:

RMAN duplicate恢复数据库报错RMAN-06054问题处理

        从v$datafile中查到的文件的scn号都比报错中的scn号大几个数量级,难道问题不在这?又想到,v$datafile应该是contral file中记录的信息,控制文件是从备份中恢复出来的,那应该记录的是比较新的scn号,如何找到文件中实际的scn号的,于是想到了v$datafile_header这个数据字典。终于从这个数据字典中找到了一些线索:RMAN duplicate恢复数据库报错RMAN-06054问题处理

        从上图中可以看到有部分文件的scn号比其他的小很多,应该是出问题的数据文件了。而且对比了文件号为12的scn号为22575491与RMAN报错中的scn号是吻合的。那应该就可以解释问题了,部分数据文件恢复出问题,导致需要更早的归档日志进行恢复,但归档日志已被删除,无法恢复,所以recover无法进行。

        问题找到了,那重新restore出问题的文件不就好了么,结果还是那句理想很丰满,现实很骨感。restore datafile时又出现了creating datafile的语句,与最开始发现的问题一样,再次查询v$datafile_header这个文件还是有问题的。都已经到这一步了,问题该怎么解决呢?

RMAN duplicate恢复数据库报错RMAN-06054问题处理

        查询datafile为12的备份文件,也是有的

RMAN duplicate恢复数据库报错RMAN-06054问题处理

        但是尝试使用FULLBACKUP的tag进行恢复时,出现了新的报错no backup of copy of datafile found to restore。这就奇怪了,前面查备份是有的,但restore时报没有,难道是见“鬼”了吗?

RMAN duplicate恢复数据库报错RMAN-06054问题处理

        实在想不出问题解决的办法,于是又去查恢复成功的日志,这次有了重大发现,原来datafile 12的备份文件是在20181218这个备份文件中的。

RMAN duplicate恢复数据库报错RMAN-06054问题处理

        现在想明白了,原来其他同事在传输备份文件时,以为只有20181219的文件是全部的备份文件,而忽略了20181218的10个备份文件。而我就用这少了10个文件的备份尝试了多次恢复数据库。想想还是有点好笑,就跟开始说的那样,如果一开始发现恢复日志有异常就去详细对比日志的话,就不会花了这么多时间来捣鼓没有全部备份文件的恢复了。

        把漏传的备份文件重新传输后,duplicate成功完成了恢复。

        致些,问题解决,最后提醒一下自己,做事情还需要再仔细一些。还有最重要的一点就是敬畏生产。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯