Oracle-rman restore遭遇RMAN-03002与ORA-19563
文章目录
- 在原DB上检查是否有重复的文件名:
- 查看rman恢复的日志
- 修正重名部分
- 重新执行rman恢复
- 结论:
在 RMAN 恢复过程中,遇到RMAN-03002连同ORA-19563:错误。
操作是将 Oracle 10.0.5的数据库备份从 RMAN備份恢复到另一台测试主机的同一个目录。
......
channel ORA_DISK_1: restore complete, elapsed time: 00:26:25
Finished restore at 24-MAR-25
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of switch command at 03/24/2025 22:19:47
ORA-19563: header validation failed for file
Recovery Manager complete
在MOS 文档 《RMAN Duplicate Fails With RMAN-06136 ORA-19563》(Doc ID 453123.1) 提到可能存在重复的文件名,这一点提供了关键线索。
在原DB上检查是否有重复的文件名:
select substr ( file_name, instr( file_name, '/', -1)) file_name, count(*) from dba_data_files
group by substr( file_name,instr( file_name, '/', -1)) having count(*) > 1
输出:
FILE_NAME COUNT(*)
-------------------- ----------
/CES_DATA16.dbf 2
输出结果显示/CES_DATA16.dbf 存在重名
查看rman恢复的日志
......
22> SET NEWNAME FOR DATAFILE '/u2/PCICES/ORADATA/PCICES/CES_DATA15.dbf' TO '/oracle/oradata/CPS_QAS/CES_DATA15.dbf';
23> SET NEWNAME FOR DATAFILE '/u2/PCICES/ORADATA/PCICES/CES_DATA16.dbf' TO '/oracle/oradata/CPS_QAS/CES_DATA16.dbf';
24> SET NEWNAME FOR DATAFILE '/u3/ORADATA/PCICES/CES_DATA16.dbf' TO '/oracle/oradata/CPS_QAS/CES_DATA16.dbf';
25> SET NEWNAME FOR DATAFILE '/u3/ORADATA/PCICES/CES_DATA17.dbf' TO '/oracle/oradata/CPS_QAS/CES_DATA17.dbf';
......
日志中,行23与24确实存在重复的文件名,并且由于restore的目标均位于/oracle/oradata/CPS_QAS目录,导致前者被后者覆盖,进而产生该错误。
修正重名部分
这里分别将名称CES_DATA16.dbf修改为CES_DATA16a.dbf与CES_DATA16b.dbf
......
SET NEWNAME FOR DATAFILE '/u2/PCICES/ORADATA/PCICES/CES_DATA16.dbf' TO '/oracle/oradata/CPS_QAS/CES_DATA16a.dbf';
SET NEWNAME FOR DATAFILE '/u3/ORADATA/PCICES/CES_DATA16b.dbf' TO '/oracle/oradata/CPS_QAS/CES_DATA16.dbf';
......
重新执行rman恢复
rman target / cmdfile='/home/oracle/restoredb.rman' log='/home/oracle/rman.20250325.log'
结论:
在 RMAN 备份恢复至不同环境 时,应提前检查 是否存在重名数据文件,并确保 SET NEWNAME 映射的目标文件名唯一,以避免覆盖导致的恢复失败。