您好!请教一下,我的问题如下:
主库的归档日志清理了,导致dataguard数据同步机制失效,备份库同步不进去数据了,请问怎么能恢复数据同步机制?急求
从备份集中恢复归档日志
declare
devtype varchar2(256);
done boolean;
begin
devtype:=sys.dbms_backup_restore.deviceAllocate(type=>\'\',ident=>\'t2\');
sys.dbms_backup_restore.restoreSetArchivedLog(destination=>\'/data1/slavearchive\');
sys.dbms_backup_restore.restoreArchivedLog(thread=>1,sequence=>29831);
sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>\'/home/oracle/backup/archive/arch_92rrpb1c_1_1.bak\',params=>null);
sys.dbms_backup_restore.deviceDeallocate;
end;
/
注意我们修改的地方是:destination=>\'/archivelog02指定恢复出来归档日志的存放系统目录位置,thread表示rac的thread号,sequence为需要恢复的那个归档日志序列号,handle表示备份集的绝对路径。
修改完毕后,直接在sqlplus命令窗口执行即可。
收起dg同步中断
select message from v$dataguard_status;
发现日志29831没有
备库:
select sequence#,dest_id,archived,applied from v$archived_log order by 1,2;
看看有哪些备份集
RMAN> list backup summary;
看备份集中包括哪些归档日志(归档日志的序号)
RMAN> list backupset 5433;
主库从备份集中恢复归档日志
declare
devtype varchar2(256);
done boolean;
begin
devtype:=sys.dbms_backup_restore.deviceAllocate(type=>\'\',ident=>\'t2\');
sys.dbms_backup_restore.restoreSetArchivedLog(destination=>\'/data1/slavearchive\');
sys.dbms_backup_restore.restoreArchivedLog(thread=>1,sequence=>29831);
sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>\'/home/oracle/backup/archive/arch_92rrpb1c_1_1.bak\',params=>null);
sys.dbms_backup_restore.deviceDeallocate;
end;
/
注意我们修改的地方是:destination=>\'/archivelog02指定恢复出来归档日志的存放系统目录位置,thread表示rac的thread号,sequence为需要恢复的那个归档日志序列号,handle表示备份集的绝对路径。
修改完毕后,直接在sqlplus命令窗口执行即可。
scp到备库的日志的位置
alTER DATABASE REGISTER LOGFILE \'/data1/slavearchive/1_29831_841541688.dbf\';注册归档日志----一般会自动注册
alert 中的提示
select sequence#,dest_id,archived,applied from v$archieved_log order by 1,2;查看备库日志应用到那个位置