RMAN DUPLICATE DATABASE with SET NEWNAME failed: RMAN-05501 RMAN-05517 (Doc ID 387093.1)
RMAN DUPLICATE DATABASE with SET NEWNAME failed: RMAN-05501 RMAN-05517 (Doc ID 387093.1)
APPLIES TO:
Oracle Database - Enterprise Edition - Version 10.2.0.2 to 11.2.0.4 [Release 10.2 to 11.2]
Oracle Database Cloud Schema Service - Version N/A and later
Oracle Database Exadata Cloud Machine - Version N/A and later
Oracle Cloud Infrastructure - Database Service - Version N/A and later
Oracle Database Cloud Exadata Service - Version N/A and later
Information in this document applies to any platform.
***Checked for relevance on 7-Dec-2015***
SYMPTOMS
出于本文档的目的,以以下虚拟环境为例来描述该过程
Primary Database:
DB_NAME: ORCL
Standby Database:
DB_UNIQUE_NAME: DUP
Executing RMAN DUPicate , on same host as Target Database using SET NEWNAME to redirect datafiles to new location.
使用 SET NEWNAME 在目标数据库所在的主机上执行 RMAN DUPlicate ,以将数据文件重定向到新位置。
SET NEWNAME has been specified for all datafiles for example like following RMAN script:
已为所有数据文件指定SET NEWNAME,例如以下RMAN脚本:
RMAN> run { allocate auxiliary channel a1 device type disk ; SET NEWNAME for datafile 1 to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DUP\SYSTEM01.DBF'; SET NEWNAME for datafile 2 to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DUP\UNDOTBS01.DBF'; SET NEWNAME for datafile 3 to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DUP\SYSAUX01.DBF'; SET NEWNAME for datafile 4 to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DUP\USERS01.DBF'; SET NEWNAME for datafile 5 to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DUP\EXAMPLE01.DBF'; SET NEWNAME for datafile 6 to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DUP\USERS02.DBF'; SET NEWNAME for datafile 7 to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DUP\DATA01.DBF'; # # run the DUPICATE command # specify client-side parameter file for auxiliary instance if necessary DUPICATE TARGET DATABASE TO DUP PFILE = 'D:\oracle\product\10.2.0\admin\DUP\pfile\initDUP.ora' UNTIL scn 22753868 LOGFILE GROUP 1 ('D:\oracle\product\10.2.0\oradata\DUP\redo01a.log') SIZE 20M REUSE , GROUP 2 ('D:\oracle\product\10.2.0\oradata\DUP\redo02a.log') SIZE 20M REUSE , GROUP 3 ('D:\oracle\product\10.2.0\oradata\DUP\redo03a.log') SIZE 20M REUSE ; }
This fails with Errors: 这将失败,并显示以下错误
=======================
.... Starting DUPicate Db at 11-AUG-2006:14:20:47 Datafile 8 skipped by request released channel: a1 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of DUPicate Db command at 08/11/2006 14:20:52 RMAN-05501: aborting DUPication of target database RMAN-05517: temporary file D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP01.DBF conflicts with file used by target database
CHANGES
CAUSE
Cause:
======
RMAN-05517: temporary file string conflicts with file used by target database
Cause : RMAN attempted to use the specified temporary file as a restore destination in the auxiliary database, but this name was already in use by the target database.
原因:RMAN尝试将指定的临时文件用作辅助数据库中的还原目标,但是目标数据库已经使用了该名称。
Action: Use the SET NEWNAME FOR TEMPFILE command to specify a name for the indicated temporary file, making sure that the new name does not conflict with a filename in use by target database. Alternatively, use DB_FILE_NAME_CONVERT and retry the command.
操作:使用 SET NEWNAME FOR TEMPFILE 命令为指示的临时文件指定一个名称,确保新名称与目标数据库使用的文件名不冲突。或者,使用 DB_FILE_NAME_CONVERT 并重试该命令。
SOLUTION
Solution: 解决方案
=========
a) You must specify SET NEWNAME for 'tempfiles' as well like: 您必须为 'tempfiles' 指定SET NEWNAME,例如
RMAN> SET NEWNAME for tempfile 1 to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DUP\TEMP01.DBF';
b) or use DB_FILE_NAME_CONVERT
Example: Set NEWNAME (Change script and add NEWNAME for tempfile(s) like: )
--------
RMAN> run { allocate auxiliary channel a1 device type disk ; SET NEWNAME for datafile 1 to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DUP\SYSTEM01.DBF'; SET NEWNAME for datafile 2 to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DUP\UNDOTBS01.DBF'; SET NEWNAME for datafile 3 to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DUP\SYSAUX01.DBF'; SET NEWNAME for datafile 4 to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DUP\USERS01.DBF'; SET NEWNAME for datafile 5 to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DUP\EXAMPLE01.DBF'; SET NEWNAME for datafile 6 to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DUP\USERS02.DBF'; SET NEWNAME for datafile 7 to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DUP\DATA01.DBF'; SET NEWNAME for tempfile 1 to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DUP\TEMP01.DBF'; # # run the DUPICATE command # specify client-side parameter file for auxiliary instance if necessary DUPICATE TARGET DATABASE TO DUP PFILE = 'D:\oracle\product\10.2.0\admin\DUP\pfile\initDUP.ora' UNTIL scn 22753868 LOGFILE GROUP 1 ('D:\oracle\product\10.2.0\oradata\DUP\redo01a.log') SIZE 20M REUSE , GROUP 2 ('D:\oracle\product\10.2.0\oradata\DUP\redo02a.log') SIZE 20M REUSE , GROUP 3 ('D:\oracle\product\10.2.0\oradata\DUP\redo03a.log') SIZE 20M REUSE ; }