如何对DG进行增量恢复?

来源:这里教程网 时间:2026-03-03 22:20:33 作者:

Rolling forward a standby database using RMAN Incremental Backup.

模拟归档丢失的情况

一 主库操作:

查看当前归档

停用归档传输

alter system set log_archive_dest_state_2=defer;

  切换归档

alter system switch logfile;
alter system switch logfile;

  模拟丢失归档

RMAN> delete archivelog low sequence 3821 high sequence 3823;
RMAN> delete force archivelog low sequence 3821 high sequence 3823; ------11G需要添加force

恢复归档传输

alter system set log_archive_dest_state_2=enable;

  备库警告日志错误

FAL[client]: Failed to request gap sequence
 GAP - thread 1 sequence 79-81
 DBID 2144245355 branch 846098926
FAL[client]: All defined FAL servers have been attempted.
-------------------------------------------------------------
Check that the CONTROL_FILE_RECORD_KEEP_TIME initialization
parameter is defined to a value that is sufficiently large
enough to maintain adequate log switch information to resolve
archivelog gaps.
-------------------------------------------------------------
Tue Apr 29 18:54:21 2014

二 备库操作

用增量备份解决断档

停止mrp 应用

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

备库查询当前scn

SELECT to_char(CURRENT_SCN) FROM V$DATABASE;
CURRENT_SCN
  570778

查询scn 取最小值(取当前scn 和最小scn 的中的最小值)

select min(fhscn) from x$kcvfh;
MIN(FHSCN)
  570778

  或者也可以通过归档序列号在主库查找对应的SCN

备库日志报错:

Fetching gap sequence in thread 2, gap sequence 48045-48054

  通过归档序列号在主库查找对应的SCN 值:

select first_change# from v$archived_log where sequence#='48045';

三 增量备份

主库进行增量备份并创建 controlfile

RMAN>BACKUP INCREMENTAL FROM SCN 570778 DATABASE FORMAT '/tmp/ForStandby_%U' tag 'FORSTANDBY';
scp ForStandby_* node2:/oracle/arch/
 
ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/control01.ctl';
scp control01.ctl node2:/oracle/oradata/test/control01.ctl

在主库增量备份的过程中,可使用以下语句查询进度

SELECT inst_id,
sid,
serial#,
opname,
ROUND(SOFAR / TOTALWORK * 100, 2) "%_COMPLETE"
FROM gV$SESSION_LONGOPS
WHERE OPNAME LIKE 'RMAN%'
AND OPNAME NOT LIKE '%aggregate%'
AND TOTALWORK != 0
AND SOFAR <> TOTALWORK;

最后确定主库在此scn 后是否添加过数据文件

SQL> select FILE#,name from v$datafile where CREATION_CHANGE#> =570778;

如果有添加过数据文件,确保standby_file_management=auto ,则后续可以restore 进行恢复

备库端操作

关闭数据库用新的 controlfile 打开到 mount 状态并注册备份信息

恢复数据文件:

alter database mount;
RMAN>CATALOG BACKUPPIECE '/oracle/arch/ForStandby_04p6vfe9_1_1';
RMAN>CATALOG BACKUPPIECE '/oracle/arch/ForStandby_03p6vfdg_1_1';

RMAN> catalog start with '/oracle/arch';

恢复数据文件:( 如果有增加过数据文件 ,执行这步,没有跳到下一步)

RMAN> restore datafile 10;数据文件号为在主库scn添加过的数据文件号

恢复

RMAN> RECOVER DATABASE NOREDO;

备库开启mrp

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

关闭 mrp

alter database recover managed standby database cancel;

开启数据库

alter database open;

相关推荐