Dataguard GAP修复

  • 11G Dataguard GAP修复
    • GAP是怎么产生的
    • 1.没有生产环境,接下来模拟一个GAP环境
    • 2.修复GAP
      • a.在主库创建备库控制文件
      • b.在主库以备库scn为起点做增量备份
      • 注:如果在备库与主库存在GAP的时间段内,主库新增了数据文件,在备库做增量恢复前需要先restore新增的数据文件。
      • c.备库用新控制文件启动到mount
      • d.在备库用主库的增量备份恢复
      • e.备库重新开启同步

11G Dataguard GAP修复

GAP是怎么产生的

一般在dg配置好后,除非有专人维护,不然很少有人会去检查dg状态,这往往会导致,因各种原因备库已经长时间未与主库同步,等发现的时候,主库的归档日志已经删除,备库无法再次与主库同步,这时候GAP就产生了。

可通过以下命令在备库查看主备库GAP

sqlplus / as sysdba
SELECT * FROM V$ARCHIVE_GAP;
THREAD#    LOW_SEQUENCE# HIGH_SEQUENCE#
---------- ------------- --------------1     198     201SELECT max(sequence#) from v$archived_log where applied='YES';
MAX(SEQUENCE#)
--------------
198

上述查询结果说明归档日志只传到198#,199#、200#、201#没有传到备库来。可此时主库的199-201#日志可能已经被删除了,备库不可能通过应用主库日志的方法来同步,所以要通过备份恢复的方法来追上和主库的数据差距。

如果主库归档日志还存在那就好处理了
首先在主库上找到备库缺失的归档日志

SQL> SELECT NAME FROM V$ARCHIVED_LOG WHERE THREAD#=1 AND DEST_ID=1 AND SEQUENCE# BETWEEN 199 AND 201 ;
name
---------------------
/u01/archivelog/1_199_1078960375.dbf
/u01/archivelog/1_200_1078960375.dbf
/u01/archivelog/1_201_1078960375.dbf

将备库缺失的日志从主库拷贝过来,在备库重新应用一下日志就行了。

如果日志在主库已经删除就使用下面的方法。

1.没有生产环境,接下来模拟一个GAP环境

停止备库同步

sqlplus / as sysdba
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
shutdown immediate

主库切换几次日志

sqlplus / as sysdba
alter system switch logfile;

我这里切换3次日志

切换3次日志产生了3个归档,199#200#201#,此时备库的日志传输已经关闭,所以这三个归档不会传输到备库

然后删除,或者将这3个日志移动到归档路径意外,模拟日志删除。
rm/mv 1_199_…dbf

重新在备库应用日志。

alter database recover managed standby database using current logfile disconnect from session;

至此,GAP已经产生,通过查询主备同步状态发现主备库已经无法继续同步。

在备库查看GAP

sqlplus / as sysdba
SELECT * FROM V$ARCHIVE_GAP;
THREAD#    LOW_SEQUENCE# HIGH_SEQUENCE#
---------- ------------- --------------1     198     201  --GAP与日志号相对SELECT max(sequence#) from v$archived_log where applied='YES';
MAX(SEQUENCE#)
--------------
198

2.修复GAP

a.在主库创建备库控制文件

alter database create standby controlfile as '/u01/standby.ctl';

b.在主库以备库scn为起点做增量备份

在备库查询当前scn
(1)这个是控制文件中的scn

sqlplus / as sysdba
select  to_char(current_scn) from v$database;
TO_CHAR(CURRENT_SCN)
----------------------------------------
2991877

(2)这个是数据文件头部的scn

SQL> select min(checkpoint_change#) from v$datafile_header where file# not in (select file# from v$datafile where enabled = 'READ ONLY');MIN(CHECKPOINT_CHANGE#)
-----------------------2991878

我们一般以控制文件中的scn或者较小的scn为准

rman target /
run{allocate channel c1 type disk;
allocate channel c2 type disk;
backup INCREMENTAL from scn 2991877 database format '/u01/incre_%U';
release channel c1;
release channel c2;
}

注:如果在备库与主库存在GAP的时间段内,主库新增了数据文件,在备库做增量恢复前需要先restore新增的数据文件。

在主库查询后发现主库新增了数据文件

sqlplus / as sysdba
select file# from v$datafile where creation_change# > =2991877;
FILE# NAME
------ -----------------------------------------------21 /u01/app/oracle/oradata/tps_data16.dbf22 /u02/oradata/tps_data17.dbf

所以备库在做恢复前要先restore新增的数据文件。

将控制文件和增量备份拷贝至备库

c.备库用新控制文件启动到mount

sqlplus / as sysdba
shutdown immediate
startup nomount
rman target /
restore controlfile from '/u01/standby.ctl';
sqlplus / as sysdba
alter database mount;

d.在备库用主库的增量备份恢复

确认备库已停止同步。

注册增量备份文件

rman target /
catalog start with '/u01/bak/';
YES


开始恢复
如果主库新增了数据文件需要先执行下面这步,restore datafile file#;如果没有新增可直接recover database noredo;

从库还原新增的数据文件
RMAN>restore datafile 21;
RMAN>restore datafile 22;

其实也可以不提前这一步,如果有新添加的数据文件没有restore的话,在recover数据库的时候会有提示如下:

如果有提示 ,你就按照提示restore datafile 153;就行了

RMAN>recover database noredo;


此时查询备库GAP,已经没有了。

e.备库重新开启同步

恢复完成后备库可开启同步

sqlplus / as sysdba
alter database open read only;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

可以重新激活一下主库同步参数 --可能也不用,我没做。

sqlplus / as sysdba
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=defer;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=enable;

此时DG同步状态应该就正常了

Dataguard GAP修复相关推荐

  1. oracle的scn增量备份,【Oracle】基于SCN的增量备份修复DataGuard GAP

    1. 首先来模拟 Gap 的产生 1.1. 备库关闭: SYS@dgtest_sshutdown immediate; 1.2. 主库切换日志 SYS@dgtestselect SEQUENCE#,A ...

  2. 2021 年公众号历史文章合集

    作者 | JiekeXu 大家好,我是JiekeXu,很高兴又和大家见面了,欢迎点击上方蓝字关注我,标星或置顶,更多干货第一时间到达! 2021 年也已经过去了,平平淡淡的 2021 走到了尽头,这一 ...

  3. 使用增量备份修复DG中的GAP

    问题描述 oracle中DG出现主备不同步现象,alert日志报警有gap信息,但是v$archive_gap视图查不到任何信息.同时主库上的对应归档已经删除且没有备份 解决方案 1.查询备库的scn ...

  4. Data Guard出现gap sequence修复

    在做 用R/W方式打开standby数据库,创建一个对象,然后通过flashback database将standby db 恢复到打开前的状态 作业时,故意没有     执行     SQL> ...

  5. 【DG】 DataGuard 中处理archive gap的方法

    [DG] DataGuard 中处理archive gap的方法 DG 中处理archive gap的方法 ==================== 当Primary Database的某些日志没有成 ...

  6. oracle dataguard坏块,一次dataguard坏块的修复

    客户有个11g的active dataguard库,mrp进程停了,看alertlog,可以看到有关ora-7445[kdxlin]的报错: cat alert*.log .... Exception ...

  7. Oracle 11g dataguard主库坏块修复

    最理想的情况是开启redo日志实时传输,可利用备库来修复主库的坏块: 查看DG模式: alter database recover managed standby database using cur ...

  8. Oracle DataGuard Study之--DataGuard FailOver案例

    Oracle DG(Dataguard)是目前比较常见的数据库HA配置策略.通过实现Physical Standby和Logical Standby,可以实现数据冗余容错机制.防止在主库出现严重故障, ...

  9. Oracle DataGuard介绍

     DataGuard 概述 DataGuard工作流程 主库把日志传输到备库,主库记录所有的操作信息,通过两种方式传输: 1:通过LNS(监听网络服务)传输到远程,通过service定义远程数据库, ...

最新文章

  1. Nginx正则表达式之匹配操作符详解
  2. NLP-基础知识-005(专家系统)
  3. Airtable(数据管理)
  4. ubuntu安装sublime
  5. 预处理prepareStatement是怎么防止sql注入漏洞的?
  6. 51 NOD 1013 3的幂的和
  7. python读取grib2数据_python读取grib grib2气象数据
  8. fullcalendar小结
  9. feignclient注解使用_Spring Cloud Nacos的使用
  10. Raki的读paper小记:DEBERTA: DECODING-ENHANCED BERT WITH DISENTANGLED ATTENTION
  11. Yolov3的Pytorch版本实现火焰检测
  12. 马拉车算法(求最长回文串)
  13. 计算机班级队名大全,霸气的队名口号大全
  14. Java利用libreOffice(jodconverter)将office(ppt,Excel,word,text)文档转换成pdf
  15. 济南连续4年蝉联中国领军智慧城市,这六点是关键
  16. vs2017c语言playsound,VS2010播放.WAW音频文件
  17. ArcGISPro制作辐射4风格地图
  18. 免费在线pdf转word
  19. js中的颜色对应的常量代码code
  20. C#学习笔记(五)CSharp操作符-基本操作符(一)

热门文章

  1. 【机器学习】聚类学习笔记+西瓜书数据集K-means实现
  2. 离合器组件的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  3. TVL 与 pixel 的转换
  4. Promise的理解和使用(二)
  5. BMS_汽车充电桩中的PGN到CAN_ID转换
  6. 月薪两万设计师推荐UI设计学习方法!
  7. 设计已死?Is Design Dead?
  8. Adafruit_GFX matrix ws2812像素屏库使用教程AWTRIX2.0像素时钟
  9. android 10虚拟相机
  10. WPS文档如何设置或取消自动生成序号