现象:从备份集还原出来的controlfile,用此进行rman还原时,报以下错误:

 

 

RMAN-06026: some targets not found - aborting 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

 

解决方法:

用dbms_backup_restore package进行恢复。

1,Startup nomount;

2,执行恢复:

DECLARE
devtype varchar2(256);
done boolean;
BEGIN
devtype:=sys.dbms_backup_restore.deviceAllocate (type=>'',ident=>'t1');
sys.dbms_backup_restore.restoreSetDatafile;
sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>01,toname=>'E:\ORACLE\PRODUCT\10.2.0\ORADATA\HISDB\SYSTEM01.DBF');
sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>02,toname=>'E:\ORACLE\PRODUCT\10.2.0\ORADATA\HISDB\UNDOTBS01.DBF');
sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>03,toname=>'E:\ORACLE\PRODUCT\10.2.0\ORADATA\HISDB\SYSAUX01.DBF');
sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>04,toname=>'E:\ORACLE\PRODUCT\10.2.0\ORADATA\HISDB\USERS01.DBF');
sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>05,toname=>'E:\ORACLE\PRODUCT\10.2.0\ORADATA\HISDB\EXAMPLE01.DBF');
sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>06,toname=>'E:\ORACLE\PRODUCT\10.2.0\ORADATA\HISDB\DRSYS');
sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>07,toname=>'E:\ORACLE\PRODUCT\10.2.0\ORADATA\HISDB\INDX');
sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>08,toname=>'E:\ORACLE\PRODUCT\10.2.0\ORADATA\HISDB\RBS');
sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>09,toname=>'E:\ORACLE\PRODUCT\10.2.0\ORADATA\HISDB\TOOLS');
sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'D:\HISDBRman\DF343_1_714024003', params=>null);
sys.dbms_backup_restore.deviceDeallocate;
END;
/

 

ps:如果有两到三个备份集,需要分开执行以上的代码,替换

sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'D:\HISDBRman\DF343_1_714024003', params=>null);

到另一个备份集。

 

3,看看control文件在不

如果rman备份集里有,就直接:

RMAN> restore controlfile from 'F:\tmp\DF344_1_714024149';

 

如果没有,则:

alter database backup controlfile to trace;

 

找到trace文件,重建你的control文件

 

4,执行恢复:

SQL> recover database using backup controlfile until cancel;

 

 

5,如果4步骤中出现log问题不让恢复的话

 联机日志丢失,recover database until cancel不可以的解决方法

 

6, open resetlogs,好了。

 

参考文档:​​http://www.eygle.com/archives/2005/06/oorman06026iioe.html​