Oracle DataGuard GAP 修复手册

时间:2022-06-01 20:42:25

Oracle DataGuard GAP 修复手册

前言

DG GAP 顾名思义就是:DG不同步,当备库不能接受到一个或多个主库的归档日志文件时候,就发生了 GAP。

那么,如果遇到GAP如何修复呢?且听我细细道来~

一、介绍

DG GAP 主要分为以下两类情况:

1、主库归档日志存在,可以通过配置 Fetch Archive Log(FAL) 参数,自动解决归档 GAP。2、主库归档日志丢失,需要 人工干预 来修复。

不同 Oracle 版本的 GAP 修复方式也不尽相同,下面分别介绍不同版本的方式!

11G 的处理步骤:

a.在主库上创建一个备库的控制文件

b.以备库的当前SCN号为起点,在主库上做一个增量备份

c.将增量备份拷贝到备库上

d.使用新的控制文件将备库启动到mount状态

e.将增量备份注册到RMAN的catalog,取消备库的恢复应用,恢复增量备份

f.开启备库的恢复进程

12C 的新特性(RECOVER … FROM SERVICE)

18C 的新特性(RECOVER STANDBY DATABASE FROM SERVICE)

Oracle随着版本的升级,逐渐将步骤缩减,进行封装,18C之后可谓是达到了所谓的一键刷新,恢复DG同步。

二、实战

下面我们通过实验来进行演示如何修复:

  • 11G常规修复
  • 12C新特性(RECOVER … FROM SERVICE)修复
  • 18C新特性(RECOVER STANDBY DATABASE FROM SERVICE)修复

三、11G常规修复

首先,模拟备库断电,主库切几个最新的归档,然后手工删掉,重新开启DG同步。

备库停止DG同步进程:

  1. sqlplus / as sysdba
  2. ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
  3. shutdown immediate

主库切换多次归档:

  1. sqlplus / as sysdba
  2. alter system switch logfile;

主库删除最近几个归档日志:

  1. rm 1_34_1070147137.arc
  2. rm 1_33_1070147137.arc

备库开启同步进程:

  1. startup
  2. ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

查看GAP:

  1. sqlplus / as sysdba
  2. SELECT * FROM V$ARCHIVE_GAP;
  3. THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#
  4. ---------- ------------- --------------
  5. 1 32 34
  6. SELECT max(sequence#) from v$archived_log where applied='YES';
  7. MAX(SEQUENCE#)
  8. --------------
  9. 31