RMAN duplicate恢复数据库报错RMAN-06054问题处理
admin
2023-04-15 22:01:42
0

        最近生产上要搞大动作,需要把生产库备份每天都恢复到另外一台机器上,进行测试。于是想到了用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成功完成了恢复。

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

相关内容

热门资讯

徐巧芯剖析赖清德:最怕自己丢掉... 海峡导报综合报道 大罢免投票一周年纪念活动26日举行,台北市长蒋万安出席并怒轰,民进党一年过后仍没有...
中国红十字会总会紧急向广东调拨... 记者从中国红十字会总会了解到,针对台风“红霞”给广东造成的灾情,中国红十字会总会启动四级应急响应,紧...
这些少年,正被“毒蛋”围猎 李梦抽了几口电子烟,吐出了白色的烟雾,有一股浓烈的水果香味。随后,她看着自己握电子烟的手,跟身边人说...
蒋万安号召“倒阁”,卢秀燕认为... 海峡导报综合报道 台北市长蒋万安27日抛出震撼议题,表示多名民代向他提议推动“倒阁”,要求台行政机构...
特朗普将在白宫会见两位重要客人 俄乌战争仍未结束,美伊冲突又有升级风险。在此背景下,美国总统特朗普将在白宫接见乌克兰和以色列领导人。...
新租客打扫卧室柜子上掉落4万元... 近日,莲前西路某小区内,张倩签下一套房子的租赁合同。当天上午,她带着12岁的大女儿周馨怡和11岁的小...
六部门通告:禁止涉军队退役报废... 关于禁止涉军队退役报废装备销售活动的通告近年来,部分经营者在线上线下公开销售涉及我军退役报废装备(指...
九寨沟景区发生泥石流,部分道路... 7月26日,九寨沟风景名胜区管理局发布泥石流灾害通报:2026年7月26日15时50分,九寨沟景区局...
空调26度不凉是什么原因 从空调内部元器件来说,不凉的原因有可能是温度传感器出现故障了,也有可能是空调压缩机或者铜管出现问题,...
鲸鸿动能携手香港国际机场、鸿蒙...   2026 年 7 月 25 日,十余位鸿蒙车主组成的车队从珠海出发,经港珠澳大桥通关抵达香港国际...