RMAN备份恢复 ORA-15005

在搭建ADG环境中,由于数据文件重命名错误导致恢复报错。通过查看RMAN日志,定位到重复的数据文件名并从备份片中找到对应文件。在RMAN中使用set newname命令重新指定文件名,然后执行恢复和switch datafile all操作,成功修复了数据文件路径并更新了控制文件。
摘要由CSDN通过智能技术生成

今天搭建ADG环境时,在restore数据文件环节,给数据库文件的重命名错误,导致产生了两个相同的数据文件名,因此在恢复时产生生了报错,下面是我的处理思路:

查看恢复报错日志,定位是哪个数据文件出现了异常:

channel c3: restoring datafile 00039 to +DATA/crmdb/system02.dbf
channel c3: restoring datafile 00043 to +DATA/crmdb/hswealth_data01.dbf
channel c3: reading from backup piece /home/oracle/rmanbak/db_CRMDB_20221111_0b1ciqqk_1_1
channel c4: starting datafile backup set restore
channel c4: specifying datafile(s) to restore from backup set
channel c4: restoring datafile 00018 to +DATA/crmdb/message_hindex01.dbf
channel c4: restoring datafile 00025 to +DATA/crmdb/crm_table02.dbf
channel c4: restoring datafile 00034 to +DATA/crmdb/fund_table06.dbf
channel c4: restoring datafile 00038 to +DATA/crmdb/fund_index04.dbf
channel c4: reading from backup piece /home/oracle/rmanbak/db_CRMDB_20221111_0c1ciqqk_1_1
channel c2: ORA-19870: error while restoring backup piece /backup/rmanbak/db_CRMDB_20221111_0e1ciqtt_1_1
ORA-19504: failed to create file "+DATA/crmdb/fund_table04.dbf"
ORA-17502: ksfdcre:4 Failed to create file +DATA/crmdb/fund_table04.dbf
ORA-15005: name "crmdb/fund_table04.dbf" is already used by an existing alias

....

failover to previous backup

released channel: c1
released channel: c2
released channel: c3
released channel: c4
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 11/11/2022 18:17:48
RMAN-06026: some targets not found - aborting restore
RMAN-06100: no channel to restore a backup or copy of datafile 42
RMAN-06100: no channel to restore a backup or copy of datafile 37
RMAN-06100: no channel to restore a backup or copy of datafile 33
RMAN-06100: no channel to restore a backup or copy of datafile 16
 

已经数据文件‘+DATA/crmdb/fund_table04.dbf’ 无法再继续创建,可知有两个重复的数据文件名,并且得知该四个数据文件都没有恢复成功。

先通过查看restore脚本cat restore.sh | grep 04  发现确实有两句相同的sql。

已经恢复失败的数据文件的名字,现在去定位该数据文件在哪个备份片当中:

RMAN> list backupset;

BS Key  Type LV Size
------- ---- -- ----------
13277   Full    813.16M
  List of Datafiles in backup set 13277
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  16      Full 14961414035 11-NOV-22 +DATADG/crmdb/datafile/fund_index.308.1039080835
  33      Full 14961414035 11-NOV-22 +DATADG/crmdb/datafile/fund_table.332.1039093283
  37      Full 14961414035 11-NOV-22 +DATADG/crmdb/datafile/fund_index.336.1039093313
  42      Full 14961414035 11-NOV-22 +DATADG/crmdb/datafile/undotbs2.347.1039094345

  Backup Set Copy #1 of backup set 13277
  Device Type Elapsed Time Completion Time Compressed Tag
  ----------- ------------ --------------- ---------- ---
  DISK        00:01:27     11-NOV-22       YES        TAG20221111T170107

    List of Backup Pieces for backup set 13277 Copy #1
    BP Key  Pc# Status      Piece Name
    ------- --- ----------- ----------
    13277   1   AVAILABLE   /home/oracle/rmanbak/db_CRMDB_20221111_0e1ciqtt_1_1

  Backup Set Copy #2 of backup set 13277
  Device Type Elapsed Time Completion Time Compressed Tag
  ----------- ------------ --------------- ---------- ---
  DISK        00:01:27     11-NOV-22       YES        TAG20221111T170107

    List of Backup Pieces for backup set 13277 Copy #2
    BP Key  Pc# Status      Piece Name
    ------- --- ----------- ----------
    13295   1   AVAILABLE   /backup/rmanbak/db_CRMDB_20221111_0e1ciqtt_1_1

此时定位完毕,从恢复脚本中找到这四个数据文件相关的语句,进行重新恢复:

RMAN >

run { 
2> set newname for datafile 33 to '+DATA/crmdb/fund_table05.dbf';
3> set newname for datafile 16 to '+DATA/crmdb/fund_index01.dbf';
4> set newname for datafile 37 to '+DATA/crmdb/fund_index03.dbf';
5> set newname for datafile 42 to '+DATA/crmdb/undotbs2_02.dbf';
6> restore datafile 33;
7> restore datafile 16;
8> restore datafile 37;
9> restore datafile 42;
10> switch datafile all;
11> } 

恢复完成后

查看alert日志发现,数据文件的路径并没有修改,因为在第一次恢复restore脚本执行的恢复失败后,并没有进行switch datafile  all 的操作,因此手动执行一遍,此时控制文件中数据文件的路径都已经更新了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值