通过RMAN的duplicate命令将目标数据库在另一主机上复制一个副本数据库时报以下错误信息:
RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of Duplicate Db command at 03/24/2015 18:28:32 RMAN-03015: error occurred in stored script Memory Script RMAN-06136: ORACLE error from auxiliary database: ORA-01013: user requested
目标数据库与复制的副本数据库在不同主机上,但有相同的目录结构,复制命令如下:
[oracle@oracle11g admin]$ rman target sys/zzh_2046@test auxiliary sys/oracle@dup catalog rman/rman@jy Recovery Manager: Release 10.2.0.5.0 - Production on Tue Mar 24 17:26:51 2015 Copyright (c) 1982, 2007, Oracle. All rights reserved. connected to target database: TEST (DBID=2168949517) connected to recovery catalog database connected to auxiliary database: DUP (not mounted) RMAN> duplicate target database to dup nofilenamecheck; Starting Duplicate Db at 2015-03-24 17:27:06 allocated channel: ORA_AUX_DISK_1 channel ORA_AUX_DISK_1: sid=35 devtype=DISK contents of Memory Script: { set until scn 1009334; set newname for datafile 1 to "/u01/app/oracle/oradata/test/system01.dbf"; set newname for datafile 2 to "/u01/app/oracle/oradata/test/undotbs01.dbf"; set newname for datafile 3 to "/u01/app/oracle/oradata/test/sysaux01.dbf"; set newname for datafile 4 to "/u01/app/oracle/oradata/test/users01.dbf"; set newname for datafile 5 to "/u01/app/oracle/oradata/test/example01.dbf"; set newname for datafile 6 to "/u01/app/oracle/oradata/test/tspitr01.dbf"; restore check readonly clone database ; } executing Memory Script executing command: SET until clause executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME Starting restore at 2015-03-24 17:27:07 using channel ORA_AUX_DISK_1 channel ORA_AUX_DISK_1: starting datafile backupset restore channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set restoring datafile 00001 to /u01/app/oracle/oradata/test/system01.dbf restoring datafile 00002 to /u01/app/oracle/oradata/test/undotbs01.dbf restoring datafile 00003 to /u01/app/oracle/oradata/test/sysaux01.dbf restoring datafile 00004 to /u01/app/oracle/oradata/test/users01.dbf restoring datafile 00005 to /u01/app/oracle/oradata/test/example01.dbf restoring datafile 00006 to /u01/app/oracle/oradata/test/tspitr01.dbf channel ORA_AUX_DISK_1: reading from backup piece /u02/ora_test875200761_721 channel ORA_AUX_DISK_1: restored backup piece 1 piece handle=/u02/ora_test875200761_721 tag=TAG20150324T151920 channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:01:05 Finished restore at 2015-03-24 17:28:12 sql statement: CREATE CONTROLFILE REUSE SET DATABASE "DUP" RESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 1 ( '/u01/app/oracle/oradata/test/redo01.log' ) SIZE 50 M REUSE, GROUP 2 ( '/u01/app/oracle/oradata/test/redo02.log' ) SIZE 50 M REUSE, GROUP 3 ( '/u01/app/oracle/oradata/test/redo03.log' ) SIZE 50 M REUSE DATAFILE '/u01/app/oracle/oradata/test/system01.dbf' CHARACTER SET ZHS16GBK contents of Memory Script: { switch clone datafile all; } executing Memory Script datafile 2 switched to datafile copy input datafile copy recid=1 stamp=875208502 filename=/u01/app/oracle/oradata/test/undotbs01.dbf datafile 3 switched to datafile copy input datafile copy recid=2 stamp=875208502 filename=/u01/app/oracle/oradata/test/sysaux01.dbf datafile 4 switched to datafile copy input datafile copy recid=3 stamp=875208502 filename=/u01/app/oracle/oradata/test/users01.dbf datafile 5 switched to datafile copy input datafile copy recid=4 stamp=875208502 filename=/u01/app/oracle/oradata/test/example01.dbf datafile 6 switched to datafile copy input datafile copy recid=5 stamp=875208502 filename=/u01/app/oracle/oradata/test/tspitr01.dbf contents of Memory Script: { set until scn 1009334; recover clone database delete archivelog ; } executing Memory Script executing command: SET until clause Starting recover at 2015-03-24 17:28:14 using channel ORA_AUX_DISK_1 starting media recovery channel ORA_AUX_DISK_1: starting archive log restore to default destination channel ORA_AUX_DISK_1: restoring archive log archive log thread=1 sequence=64 channel ORA_AUX_DISK_1: reading from backup piece /u02/ora_test875200848_731 channel ORA_AUX_DISK_1: restored backup piece 1 piece handle=/u02/ora_test875200848_731 tag=TAG20150324T152048 channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01 archive log filename=/u01/app/oracle/product/10.2.0/db/dbs/arch1_64_870806981.dbf thread=1 sequence=64 channel clone_default: deleting archive log(s) archive log filename=/u01/app/oracle/product/10.2.0/db/dbs/arch1_64_870806981.dbf recid=1 stamp=875208502 media recovery complete, elapsed time: 00:00:01 Finished recover at 2015-03-24 17:28:17 contents of Memory Script: { shutdown clone; startup clone nomount ; } executing Memory Script RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of Duplicate Db command at 03/24/2015 18:28:32 RMAN-03015: error occurred in stored script Memory Script RMAN-06136: ORACLE error from auxiliary database: ORA-01013: user requested cancel of current operation
这里出错是因为启动辅助实例后没有断开连接
[oracle@jingyong1 dbs]$ export ORACLE_SID=dup [oracle@jingyong1 dbs]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.5.0 - Production on Tue Mar 24 16:19:29 2015 Copyright (c) 1982, 2010, Oracle. All Rights Reserved. Connected to an idle instance. SQL> startup nomount ORACLE instance started. Total System Global Area 167772160 bytes Fixed Size 1272624 bytes Variable Size 58721488 bytes Database Buffers 104857600 bytes Redo Buffers 2920448 bytes
断开连接
SQL> exit Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options
重新执行复制命令:
[oracle@oracle11g admin]$ rman target sys/zzh_2046@test auxiliary sys/oracle@dup catalog rman/rman@jy Recovery Manager: Release 10.2.0.5.0 - Production on Tue Mar 24 18:58:33 2015 Copyright (c) 1982, 2007, Oracle. All rights reserved. connected to target database: TEST (DBID=2168949517) connected to recovery catalog database connected to auxiliary database: DUP (not mounted) RMAN> duplicate target database to dup nofilenamecheck; Starting Duplicate Db at 2015-03-24 18:58:47 allocated channel: ORA_AUX_DISK_1 channel ORA_AUX_DISK_1: sid=36 devtype=DISK contents of Memory Script: { set until scn 1009334; set newname for datafile 1 to "/u01/app/oracle/oradata/test/system01.dbf"; set newname for datafile 2 to "/u01/app/oracle/oradata/test/undotbs01.dbf"; set newname for datafile 3 to "/u01/app/oracle/oradata/test/sysaux01.dbf"; set newname for datafile 4 to "/u01/app/oracle/oradata/test/users01.dbf"; set newname for datafile 5 to "/u01/app/oracle/oradata/test/example01.dbf"; set newname for datafile 6 to "/u01/app/oracle/oradata/test/tspitr01.dbf"; restore check readonly clone database ; } executing Memory Script executing command: SET until clause executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME Starting restore at 2015-03-24 18:58:47 using channel ORA_AUX_DISK_1 channel ORA_AUX_DISK_1: starting datafile backupset restore channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set restoring datafile 00001 to /u01/app/oracle/oradata/test/system01.dbf restoring datafile 00002 to /u01/app/oracle/oradata/test/undotbs01.dbf restoring datafile 00003 to /u01/app/oracle/oradata/test/sysaux01.dbf restoring datafile 00004 to /u01/app/oracle/oradata/test/users01.dbf restoring datafile 00005 to /u01/app/oracle/oradata/test/example01.dbf restoring datafile 00006 to /u01/app/oracle/oradata/test/tspitr01.dbf channel ORA_AUX_DISK_1: reading from backup piece /u02/ora_test875200761_721 channel ORA_AUX_DISK_1: restored backup piece 1 piece handle=/u02/ora_test875200761_721 tag=TAG20150324T151920 channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:01:05 Finished restore at 2015-03-24 18:59:53 sql statement: CREATE CONTROLFILE REUSE SET DATABASE "DUP" RESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 1 ( '/u01/app/oracle/oradata/test/redo01.log' ) SIZE 50 M REUSE, GROUP 2 ( '/u01/app/oracle/oradata/test/redo02.log' ) SIZE 50 M REUSE, GROUP 3 ( '/u01/app/oracle/oradata/test/redo03.log' ) SIZE 50 M REUSE DATAFILE '/u01/app/oracle/oradata/test/system01.dbf' CHARACTER SET ZHS16GBK contents of Memory Script: { switch clone datafile all; } executing Memory Script datafile 2 switched to datafile copy input datafile copy recid=1 stamp=875214004 filename=/u01/app/oracle/oradata/test/undotbs01.dbf datafile 3 switched to datafile copy input datafile copy recid=2 stamp=875214004 filename=/u01/app/oracle/oradata/test/sysaux01.dbf datafile 4 switched to datafile copy input datafile copy recid=3 stamp=875214004 filename=/u01/app/oracle/oradata/test/users01.dbf datafile 5 switched to datafile copy input datafile copy recid=4 stamp=875214004 filename=/u01/app/oracle/oradata/test/example01.dbf datafile 6 switched to datafile copy input datafile copy recid=5 stamp=875214004 filename=/u01/app/oracle/oradata/test/tspitr01.dbf contents of Memory Script: { set until scn 1009334; recover clone database delete archivelog ; } executing Memory Script executing command: SET until clause Starting recover at 2015-03-24 18:59:56 using channel ORA_AUX_DISK_1 starting media recovery channel ORA_AUX_DISK_1: starting archive log restore to default destination channel ORA_AUX_DISK_1: restoring archive log archive log thread=1 sequence=64 channel ORA_AUX_DISK_1: reading from backup piece /u02/ora_test875200848_731 channel ORA_AUX_DISK_1: restored backup piece 1 piece handle=/u02/ora_test875200848_731 tag=TAG20150324T152048 channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01 archive log filename=/u01/app/oracle/product/10.2.0/db/dbs/arch1_64_870806981.dbf thread=1 sequence=64 channel clone_default: deleting archive log(s) archive log filename=/u01/app/oracle/product/10.2.0/db/dbs/arch1_64_870806981.dbf recid=1 stamp=875214007 media recovery complete, elapsed time: 00:00:01 Finished recover at 2015-03-24 19:00:00 contents of Memory Script: { shutdown clone; startup clone nomount ; } executing Memory Script database dismounted Oracle instance shut down connected to auxiliary database (not started) Oracle instance started Total System Global Area 167772160 bytes Fixed Size 1272624 bytes Variable Size 58721488 bytes Database Buffers 104857600 bytes Redo Buffers 2920448 bytes sql statement: CREATE CONTROLFILE REUSE SET DATABASE "DUP" RESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 1 ( '/u01/app/oracle/oradata/test/redo01.log' ) SIZE 50 M REUSE, GROUP 2 ( '/u01/app/oracle/oradata/test/redo02.log' ) SIZE 50 M REUSE, GROUP 3 ( '/u01/app/oracle/oradata/test/redo03.log' ) SIZE 50 M REUSE DATAFILE '/u01/app/oracle/oradata/test/system01.dbf' CHARACTER SET ZHS16GBK contents of Memory Script: { set newname for tempfile 1 to "/u01/app/oracle/oradata/test/temp01.dbf"; switch clone tempfile all; catalog clone datafilecopy "/u01/app/oracle/oradata/test/undotbs01.dbf"; catalog clone datafilecopy "/u01/app/oracle/oradata/test/sysaux01.dbf"; catalog clone datafilecopy "/u01/app/oracle/oradata/test/users01.dbf"; catalog clone datafilecopy "/u01/app/oracle/oradata/test/example01.dbf"; catalog clone datafilecopy "/u01/app/oracle/oradata/test/tspitr01.dbf"; switch clone datafile all; } executing Memory Script executing command: SET NEWNAME renamed temporary file 1 to /u01/app/oracle/oradata/test/temp01.dbf in control file cataloged datafile copy datafile copy filename=/u01/app/oracle/oradata/test/undotbs01.dbf recid=1 stamp=875214019 cataloged datafile copy datafile copy filename=/u01/app/oracle/oradata/test/sysaux01.dbf recid=2 stamp=875214019 cataloged datafile copy datafile copy filename=/u01/app/oracle/oradata/test/users01.dbf recid=3 stamp=875214019 cataloged datafile copy datafile copy filename=/u01/app/oracle/oradata/test/example01.dbf recid=4 stamp=875214019 cataloged datafile copy datafile copy filename=/u01/app/oracle/oradata/test/tspitr01.dbf recid=5 stamp=875214019 datafile 2 switched to datafile copy input datafile copy recid=1 stamp=875214019 filename=/u01/app/oracle/oradata/test/undotbs01.dbf datafile 3 switched to datafile copy input datafile copy recid=2 stamp=875214019 filename=/u01/app/oracle/oradata/test/sysaux01.dbf datafile 4 switched to datafile copy input datafile copy recid=3 stamp=875214019 filename=/u01/app/oracle/oradata/test/users01.dbf datafile 5 switched to datafile copy input datafile copy recid=4 stamp=875214019 filename=/u01/app/oracle/oradata/test/example01.dbf datafile 6 switched to datafile copy input datafile copy recid=5 stamp=875214019 filename=/u01/app/oracle/oradata/test/tspitr01.dbf contents of Memory Script: { Alter clone database open resetlogs; } executing Memory Script database opened Finished Duplicate Db at 2015-03-24 19:00:36
执行成功
总结:出现这个错误的原因是因为,启动辅助实例的会话没有断开连接,RMAN在执行duplicate
命令时不能有任何其它会话连接到辅助实例,否则就是会执行失败。