RMAN duplicate for standby失败解决过程
在用rman duplicate to standby 生成备库的时候总是不成功,多次尝试均是下面的错误:
RMAN> duplicate target database for standby nofilenamecheck;
Starting Duplicate Db at 16-JAN-2013 12:22:45
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=25 device type=DISK
contents of Memory Script:
{
restore clone standby controlfile;
}
executing Memory Script
Starting restore at 16-JAN-2013 12:22:49
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: reading from backup piece /backup/dg_back_07nvi815_1_1
channel ORA_AUX_DISK_1: piece handle=/backup/dg_back_07nvi815_1_1 tag=TAG20130116T110405
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/oradata/e7dg1/controlfile/current1.ctl
output file name=/oradata/e7dg1/controlfile/current2.ctl
Finished restore at 16-JAN-2013 12:22:52
contents of Memory Script:
{
sql clone 'alter database mount standby database';
}
executing Memory Script
sql statement: alter database mount standby database
RMAN-05529: WARNING: DB_FILE_NAME_CONVERT resulted in invalid ASM names; names changed to disk group only.
contents of Memory Script:
{
set newname for tempfile  1 to
"+data";
switch clone tempfile all;
set newname for datafile  1 to
"+data";
set newname for datafile  2 to
"+data";
set newname for datafile  3 to
"+data";
set newname for datafile  4 to
"+data";
set newname for datafile  5 to
"+data";
restore
clone database
;
}
executing Memory Script
executing command: SET NEWNAME
renamed tempfile 1 to +data in control file
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting restore at 16-JAN-2013 12:23:02
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to +data
channel ORA_AUX_DISK_1: restoring datafile 00002 to +data
channel ORA_AUX_DISK_1: restoring datafile 00003 to +data
channel ORA_AUX_DISK_1: restoring datafile 00004 to +data
channel ORA_AUX_DISK_1: restoring datafile 00005 to +data
channel ORA_AUX_DISK_1: reading from backup piece /backup/dg_back_05nvi7sn_1_1
channel ORA_AUX_DISK_1: ORA-19870: error while restoring backup piece /backup/dg_back_05nvi7sn_1_1
ORA-19504: failed to create file "+DATA"
ORA-17502: ksfdcre:4 Failed to create file +DATA
ORA-15001: diskgroup "DATA" does not exist or is not mounted
ORA-15077: could not locate ASM instance serving a required diskgroup
ORA-29701: unable to connect to Cluster Synchronization Service
failover to previous backup
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to +data
channel ORA_AUX_DISK_1: restoring datafile 00002 to +data
channel ORA_AUX_DISK_1: restoring datafile 00003 to +data
channel ORA_AUX_DISK_1: restoring datafile 00004 to +data
channel ORA_AUX_DISK_1: restoring datafile 00005 to +data
channel ORA_AUX_DISK_1: reading from backup piece +FRA/e7rac/backupset/2013_01_15/nnndf0_tag20130115t162421_0.278.804791379
channel ORA_AUX_DISK_1: ORA-19870: error while restoring backup piece +FRA/e7rac/backupset/2013_01_15/nnndf0_tag20130115t162421_0.278.804791379
ORA-19505: failed to identify file "+FRA/e7rac/backupset/2013_01_15/nnndf0_tag20130115t162421_0.278.804791379"
ORA-17503: ksfdopn:2 Failed to open file +FRA/e7rac/backupset/2013_01_15/nnndf0_tag20130115t162421_0.278.804791379
ORA-15001: diskgroup "FRA" does not exist or is not mounte
failover to previous backup
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 01/16/2013 12:23:06
RMAN-05501: aborting duplication of target database
RMAN-05556: not all datafiles have backups that can be recovered to SCN consistent
RMAN-03015: error occurred in stored script Memory Script
RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 4 found to restore
RMAN-06023: no backup or copy of datafile 3 found to restore
RMAN-06023: no backup or copy of datafile 2 found to restore
RMAN-06023: no backup or copy of datafile 1 found to restore
RMAN  >
该问题困扰了我两天,怎么检查也检查不出错误,重做也是同样的问题。
问题1:
set newname for tempfile  1 to
"+data";
这个问题是参数中少写临时表空间的转换参数:
*.db_file_name_convert='+DATA/e7rac/tempfile/','/oradata/e7dg2/datafile/'
加入该参数后,将变成这样:
set newname for tempfile  1 to
"/oradata/e7dg2/datafile/temp.263.804695143";
问题2:
Datafile 部分
set newname for datafile  1 to
"+data";
set newname for datafile  2 to
"+data";
set newname for datafile  3 to
"+data";
set newname for datafile  4 to
"+data";
set newname for datafile  5 to
"+data";
参数已经配置:
*.db_file_name_convert='+DATA/E7RAC/DATAFILE/','/oradata/e7dg2/datafile/'
最后发现是大小写错误:上面路径来自于asmcmd>中的pwd,参数修改为下面的情况后正常。
*.db_file_name_convert='+DATA/e7rac/datafile/','/oradata/e7dg2/datafile/'
正确的路径参数是来自于命令:
select file_name from dba_data_files;
最后正确的执行过程:
RMAN> duplicate target database for standby nofilenamecheck;
Starting Duplicate Db at 17-JAN-2013 16:42:46
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=20 device type=DISK
contents of Memory Script:
{
restore clone standby controlfile;
}
executing Memory Script
Starting restore at 17-JAN-2013 16:42:49
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: restoring control file
ORA-19625: error identifying file /apps/Oracle/product/11.2.0/dbhome_1/dbs/snapcf_e7rac1.f
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
ORA-19600: input file is control file  (/apps/oracle/product/11.2.0/dbhome_1/dbs/snapcf_e7rac1.f)
ORA-19601: output file is control file  (/oradata/e7dg2/controlfile/current1.ctl)
failover to previous backup
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: reading from backup piece /backup/dg_back_07nvi815_1_1
channel ORA_AUX_DISK_1: piece handle=/backup/dg_back_07nvi815_1_1 tag=TAG20130116T110405
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/oradata/e7dg2/controlfile/current1.ctl
output file name=/oradata/e7dg2/controlfile/current2.ctl
Finished restore at 17-JAN-2013 16:42:51
contents of Memory Script:
{
sql clone 'alter database mount standby database';
}
executing Memory Script
sql statement: alter database mount standby database
contents of Memory Script:
{
set newname for tempfile  1 to
"/oradata/e7dg2/datafile/temp.263.804695143";
switch clone tempfile all;
set newname for datafile  1 to
"/oradata/e7dg2/datafile/system.256.804692297";
set newname for datafile  2 to
"/oradata/e7dg2/datafile/sysaux.257.804692309";
set newname for datafile  3 to
"/oradata/e7dg2/datafile/undotbs1.258.804692313";
set newname for datafile  4 to
"/oradata/e7dg2/datafile/users.259.804692315";
set newname for datafile  5 to
"/oradata/e7dg2/datafile/undotbs2.264.804696469";
restore
clone database
;
}
executing Memory Script
executing command: SET NEWNAME
renamed tempfile 1 to /oradata/e7dg2/datafile/temp.263.804695143 in control file
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting restore at 17-JAN-2013 16:42:58
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to /oradata/e7dg2/datafile/system.256.804692297
channel ORA_AUX_DISK_1: restoring datafile 00002 to /oradata/e7dg2/datafile/sysaux.257.804692309
channel ORA_AUX_DISK_1: restoring datafile 00003 to /oradata/e7dg2/datafile/undotbs1.258.804692313
channel ORA_AUX_DISK_1: restoring datafile 00004 to /oradata/e7dg2/datafile/users.259.804692315
channel ORA_AUX_DISK_1: restoring datafile 00005 to /oradata/e7dg2/datafile/undotbs2.264.804696469
channel ORA_AUX_DISK_1: reading from backup piece /backup/dg_back_05nvi7sn_1_1
channel ORA_AUX_DISK_1: piece handle=/backup/dg_back_05nvi7sn_1_1 tag=TAG20130116T110143
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:01:25
Finished restore at 17-JAN-2013 16:44:24
contents of Memory Script:
{
switch clone datafile all;
}
executing Memory Script
datafile 1 switched to datafile copy
input datafile copy RECID=1 STAMP=804960154 file name=/oradata/e7dg2/datafile/system.256.804692297
datafile 2 switched to datafile copy
input datafile copy RECID=2 STAMP=804960154 file name=/oradata/e7dg2/datafile/sysaux.257.804692309
datafile 3 switched to datafile copy
input datafile copy RECID=3 STAMP=804960154 file name=/oradata/e7dg2/datafile/undotbs1.258.804692313
datafile 4 switched to datafile copy
input datafile copy RECID=4 STAMP=804960154 file name=/oradata/e7dg2/datafile/users.259.804692315
datafile 5 switched to datafile copy
input datafile copy RECID=5 STAMP=804960154 file name=/oradata/e7dg2/datafile/undotbs2.264.804696469
Finished Duplicate Db at 17-JAN-2013 16:44:55