什么是archive gap

Archive Gap就是standby端日志应用的过程中丢失的一段范围的redo.典型的发生在standby端不能接收primary的redo信息或者接收后不能应用这些redo.

一旦出现GAP,则standby端的Log Apply Services将会暂停,直到Gap解决后恢复正常。

产生Archive Gap的可能原因:

- 网络或者日志传输服务中断

- standby故障

- 日志传输服务配置错误

- standby端I/O异常

- 在archivelog应用到standby之前被手工删除

- 带宽不足

GAP的处理

Automatic Gap Resolution

自动Gap处理由Log Transport Services自动执行。11.2开始,通过比较当前要传输的日志和standby最后接收到的日志信息,如果中间有丢失的redo,将会通过ARCH-RFS Heartbeat Ping机制自动向primary请求丢失的log序列。这种Gap解决类型采用参数LOG_ARCHIVE_DEST_n配置的SERVICE定义。ARCH-RFS Heartbeat Ping执行current和Gap之间日志序列的顺序询问,发现一个解决一个。Gap解决完成后,ARCH/LGWR进程将会被通知Gap已解决,然后继续传输redo.

FAL(Fetch Archive Log) Gap Resolution

Standby接收到archivelog,或者standby redolog接收redo信息后,将会注册到standby controlfile中。如果由于某种原因丢失或者其中某个redo不可用,FAL将会请求执行GAP解决。使用FAL,则需要设置相关的参数。

FAL_SERVER:执行向哪个DB(primary/standby)请求archivelog的TNS-Alias或连接串。可以指定多个,FAL将会顺序尝试这些TNS-Alias请求archivelog解决Gap.

FAL_CLIENT: 11.2开始废弃。11.1之前指定standby的TNS-Alias,11.1指定为standby的DB_UNIQUE_NAME,用来响应FAL_SERVER.

当Log Apply Services发现Gap,将会发送FAL请求到FAL_SERVER.FAL_SERVER的ARCH进程

尝试获得并发送请求的日志序列到FAL_CLIENT。如果FAL_SERVER指定的TNS-Alias中第一个请求不成功,将会顺序的尝试向第二个TNS请求。如果轮询一遍后均请求失败,则在alert log中抛出错误。

FAL机制从9.2 physical standby,10.1的logical standby开始出现。

Manual Gap Resolution

当Gap不能自动解决时,则需要手工去解决。

物理standby通过查询V$ARCHIVE_GAP视图查看当前的GAP,此视图存在一些已知BUG。

SQL> select * from v$archive_gap;

可通过以下SQL查询是否存在GAP:

set lines 200 pages 100

column db_name format a9

column database_role format a13

column thread# format 9999

break on thread# skip 1

select db_name,thread#,database_role,sequence# from

(select name db_name from v$database),

(select 'Primary' database_role,thread#,sequence# from (select unique thread#, max(sequence#) over (partition by thread#) as sequence# from v$archived_log where standby_dest='NO' and archived='YES'))

union all

select db_name,thread#,database_role,sequence# from

(select name db_name from v$database),

(select 'Standby' database_role,thread#,sequence# from (select unique thread#, max(sequence#) over (partition by thread#) as sequence# from v$archived_log where standby_dest='YES' and archived='YES'))

order by thread#,database_role;

需要注意的是,有的redo已经在standby内存中应用,还未写入磁盘,此时在primary端查询的APPLIED仍然为NO,只需要在standby端刷新一下buffer_cache即可。

SQL> alter system flush buffer_cache;

如果存在GAP,则拷贝GAP日志序列到standby,并手工注册。

SQL> alter database register logfile 'log-file';

Roll forward using Incremental Backup(Physical standby only)

从10.2开始,如果上述方法均不能解决Gap,则可以采用指定SCN的增量备份解决Gap.

查询standby最后应用日志的SCN,在primary指定该SCN做一个RMAN增量备份和for standby的controlfile备份,在standby端,恢复新的standby controlfile,然后应用增量备份。

可以参考ONLINE Document<Oracle Data Guard Concepts and Administration>

<Using RMAN Incremental Backups to Roll Forward a Physical Standby Database>章节

MOS(文档 ID 836986.1)<Steps to perform for Rolling Forward a Physical Standby Database using RMAN Incremental Backup>

DG archive gap的更多相关文章

  1. 通过增量备份恢复来处理Oracle DG 复制GAP

    1.确定增备scn范围,通过alert日志获取gap日志序列GAP - thread 1 sequence 109631-117170 2.根据序列获取增备起点SCN提示最小gap序列为109631, ...

  2. DG日志不应用,GAP,主备切换解决思路与办法

    环境ORACLE 10G OS WINDOWS 对于DG故障解决思路,DG日志切换不进行应用,DG出现GAP解决方法,DG主备库切换, 当DG出现故障时,第一时间检测alert日志,服务器OS日志,网 ...

  3. DG环境恢复同步遇到报错ORA-00353ORA-00334以及ORA-00600[2619], [47745]

    问题说明 客户环境主库4节点RAC11.2.0.4,单实例DG环境,DG由于空间不足,导致同步中断,由于DG备库未应用的归档主库都再,本次恢复的方式,是开启dg mrp进程,自动同步追上主库. 以下遇 ...

  4. 【OCP、OCM、高可用等】小麦苗课堂网络班招生简章(从入门到专家)--课程大纲

    [OCP.OCM.高可用等]小麦苗课堂网络班招生简章(从入门到专家)--课程大纲 小麦苗信息 我的个人信息 网名:小麦苗 QQ:646634621 QQ群:618766405 我的博客:http:// ...

  5. [terry笔记]data guard基础知识

    如下介绍了data guard的基础知识,整理自网络: Data Gurad 通过冗余数据来提供数据保护,Data Gurad 通过日志同步机制保证冗余数据和主数据之前的同步,这种同步可以是实时,延时 ...

  6. DataSync 异构数据同步

    RAC, Data Gurad, Stream 是Oracle 高可用性体系中的三种工具,每个工具即可以独立应用,也可以相互配合. 他们各自的侧重点不同,适用场景也不同. RAC 它的强项在于解决单点 ...

  7. 回滚Swtichover

    从11.2.0.2开始,如果由于某种原因switchover没有成功,可以回滚switchover. For physical standby databases in situations wher ...

  8. 3. ORACLE DATAGUARD 进程

    欢迎指正与讨论. 3.1 主库 LNS LNS:一般理解为log network serviceLNS 进程负责将主库redo传输到备库.在11gR1及之前版本进程命名为LNSn,其负责ASYNC和S ...

  9. oracle已知会导致错误结果的bug列表(Bug Issues Known to cause Wrong Results)

    LAST UPDATE:     1 Dec 15, 2016 APPLIES TO:     1 2 3 4 Oracle Database - Enterprise Edition - Versi ...

随机推荐

  1. 关于linq使用建议

    1.由于目前我做的项目使用的是SocanCode工具生成的三层框架,于是乎对于一些基本数据类型采用了可空类型编程 public CountryCode(int? id, string en_name, ...

  2. dedecms4张关键表解析之1

    虽然dedecms默认共有87张表,但是只有4张最核心,最最要的表. 1.第一张表:dede_arctype  栏目表 dede设计者认为不管存放什么样的数据(文章,商品,电影)都应该属于某个栏目(类 ...

  3. 一个Web报表项目的性能分析和优化实践(三) :提高Web应用服务器Tomcat的内存配置,并确认配置正确

    摘要 上一篇,一个Web报表项目的性能分析和优化实践(一):小试牛刀,统一显示SQL语句执行时间 ,讲述了项目优化的整体背景,重点讲述了统一显示了Web项目SQL语句的执行时间. 本篇,将重点介绍提高 ...

  4. ECNUOJ 2150 完美的拯救

    完美的拯救 Time Limit:1000MS Memory Limit:65536KBTotal Submit:147 Accepted:50 Description  一只可怜的蚂蚁被万恶的魔术师 ...

  5. 介绍静态链接库和动态链接库的差别,及在VC++6.0中的建立和使用

    首先介绍一下链接库:链接库分为动态链接库和静态链接库两种 LIB是静态链接库,在程序编译连接的时候是静态链接,其相应的文件格式是.lib. 即当程序採用静态链接库的时候..lib文件里的函数被链接到终 ...

  6. volatile的含义

    从词面上来讲.volatile的意思是易变的,也就是说.在程序执行的过程中,有一些变量可能会被莫名其妙的改变,而优化器为了节约时间.有时候不会重读这个变量的真实值,而是去读在寄存器的备份,这种话,这个 ...

  7. Java 8 时间日期库的20个使用演示样例

    除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务演示样例来学习怎样使用Java 8的这套API.Java对日 ...

  8. HDU 1512 左偏树+并查集

    思路: 左偏树里面掺了一些并查集的应用 这里放一份左偏树的代码模板 重点就是merge函数了-- int merge(int k1,int k2){ if(!k1||!k2)return k1+k2; ...

  9. eclipse启动Tomcat加载项目时报内存溢出错误解决办法

    在eclipse中点击Window->Preferences打开全局属性设置对话框,如下图所示设置Tomcat运行时的JVM参数,添加这段JVM设置:-Xms256M -Xmx768M -XX: ...

  10. Android自定义控件简单实现ratingbar效果

    先上图: 一开始让我自定义控件我是拒绝的,因为android很早以前就有一个控件ratingbar,但是设置样式的时候我发现把图片设置小一点就显示不全,一直找不到解办法!(可以设置系统的自带的小样式) ...