利用dbms_backup_restore函数对控制文件的丢失的恢复

 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.restoreControlfileTo(cfname=>'/opt/oracle/huang.ctl');
sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'/opt/oracle/flash_recovery_area/ORCL/backupset/2010_04_12/o1_mf_ncsnf_TAG20100412T214915_5w698bcg_.bkp', params=>null);
sys.dbms_backup_restore.deviceDeallocate;
END;
 
cfname=>'/opt/oracle/huang.ct表示生成的控制文件。
handle=>'/opt/oracle/flash_recovery_area/ORCL/backupset/2010_04_12/o1_mf_ncsnf_TAG20100412T214915_5w698bcg_.bkp
这个表示的是含有控制文件的RMAN备份片。
 
 
SQL> get /tmp/1.sql
  1  DECLARE
  2  devtype varchar2(256);
  3  done boolean;
  4  BEGIN
  5  devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');
  6  sys.dbms_backup_restore.restoreSetDatafile;
  7  sys.dbms_backup_restore.restoreControlfileTo(cfname=>'/opt/oracle/huang.ctl');
  8  sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'/opt/oracle/flash_recovery_area/ORCL/backupset/2010_04_12/o1_mf_ncsnf_TAG20100412T214915_5w698bcg_.bkp', params=>null);
  9  sys.dbms_backup_restore.deviceDeallocate;
 10* END;
SQL> /
 
PL/SQL procedure successfully completed.
查看是否已经成功生成此文件。
SQL> !ls /opt/oracle/huang.ctl;
/opt/oracle/huang.ctl
在把/opt/oracle/huang.ctl拷贝到原来的控制文件去就可以了。
 
 
 

你可能感兴趣的:(backup,文件,restore,休闲,DBMS)