本文共 847 字,大约阅读时间需要 2 分钟。
在实际环境中遇到这个问题,数据库为归档状态,但归档完毕后rman通过crontab自动备走归档日志并删除存在系统上的归档日志文件。当oracle DataGuard出现gap的时候,需要将归档日志找出来进行恢复,
当然遇到GAP的情况有很多种方法,
这时候我们开始调用Oracle的一个内部非公开的函数包:dbms_backup_restore 来从备份集中抽取归档日志到指定的系统目录。以满足我们的需求。
declare
devtype varchar2(256); done boolean; begin devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'t2'); sys.dbms_backup_restore.restoreSetArchivedLog(destination=>'/u01/app/oracle/archivelog'); sys.dbms_backup_restore.restoreArchivedLog(thread=>1,sequence=>72156); sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'/backup_remote/rman/cloudcow/2020_11_22/cloudcow_lev"0"_psvg4g9v_1_1_20201122',params=>null); sys.dbms_backup_restore.deviceDeallocate; end注意我们修改的地方是:destination=>'/u01/app/oracle/archivelog指定恢复出来归档日志的存放系统目录位置,thread表示rac的thread号,sequence为需要恢复的那个归档日志序列号,handle表示备份集的绝对路径。修改完毕后,直接在sqlplus命令窗口执行即可。
转载地址:http://uchji.baihongyu.com/