1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

记一次RMAN-20207报错处理过程

概述

最近做了一次不完全恢复的库,遇到了RMAN-20207错误的处理,给我留下了深刻的印象。在测试环境中复现了这个错误,现在分享一下处理方法。

记一次RMAN-20207报错处理过程

现象模拟

1、首先要备份全库,在此基础上进行恢复。我的测试环境只有五个数据文件,其中system、sysaux、undo这三个表空间是必须恢复的,而第五个文件是模拟的业务表空间,这次我们要恢复的目标就是它。所以我们需要通过命令来还原对应的数据文件,并使用skip命令跳过不需要恢复的表空间,最后通过resetlogs方式打开数据库。

2、如果我们要提前将不需要恢复的表空间对应的数据文件离线并删除,可以避免skip命令的使用。如果只恢复了test1表空间,会发现数据有丢失,需要进行第二次恢复,将test2表空间加上。在这里,我们需要新添加test2表空间对应的数据文件,也就是2号文件。但是随后进行recover报错,报错信息中包括RMAN-20209错误。这就是之前生产中出现的问题。

关于报错原因:我测试环境中使用resetlogs后的控制文件进行二次恢复,因为incarnation发生了改变,导致恢复报错。而在生产环境中,进行恢复时也犯了这个错误,从而导致了一系列问题。

解决方案

1、使用resetdatabasetoincarnation命令将incarnation调整到resetlog之前的状态。同时,根据需要进行文件状态的修改,将新添加的文件修改为online。在生产环境中,我们虽然reset了incarnation,但是未将新增的文件设置为online就进行了recover,导致数据库无法启动,最终需要第三次重新恢复。

2、重新恢复一份resetlog前的控制文件,根据需要进行文件重命名,然后执行recover操作。

总之,在进行恢复操作时要注意incarnation的改变以及文件状态的修改,以避免出现类似的错误。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/5997.html