Oracle Data Guard延迟的几个可能(r11笔记第69天)

     Oracle Data Guard中很可能出现延迟的情况,而数据一旦出现延迟就意味着丢数据。退一步来说丢数据总比数据乱了好,但是回过头来,能不丢数据但是丢了,这就有些说不过去了。

    因为预防人为误操作等,可能有些环境中会特意设置一个延迟,基本就是下面的设置方法:

方法1:

alter database recover managed standby database delay 120 disconnect from session;方法2

alter system set log_archive_dest_3='service=db3 lgwr async delay=120 valid_for=(all_logfiles,all_roles)
db_unique_name=db3';    我们这里所说的延迟是计划外的延迟,比如一个ADG的环境,案例应该是实时同步,但是却有数据同步出现延迟的情况。我自己碰到一些,还帮网友处理过几次。

    大体来说,10g和11g中的数据同步延迟场景还不大一样。

    在10g中如果一主两备的架构下,如果备1是在read only状态,则整个数据同步还是会延迟,需要手工切换日志才能增量同步。

   在11g中,倒不存在这样的限制了,因为是Active Data Guard的方式,所以可以在read only的基础上接收应用增量数据变化。但是延迟的问题依旧可能存在。

    我一个例子来说明,简单来说,如何判断一个Data Guard是Active Data Guard呢,可以用一个SQL语句来判定。

10:27:21 SQL>select current_scn from v$database;      
      CURRENT_SCN
      232913508003
10:27:22 SQL> /
       CURRENT_SCN
      232913508005随着时间的变化,SCN会发生变化,这和10g是一个鲜明的对比。
    而如果Data Guard环境出现延迟,如果通过DG Broker来查看,基本就是下面的显示情况。

DGMGRL> show database verbose sol;  
  Role:            PHYSICAL STANDBY
  Intended State:  APPLY-ON
  Transport Lag:   3 minutes 37 seconds
  Apply Lag:       3 minutes 37 seconds
  Real Time Query: ON   同时在备库的alert日志中查看却似乎看不出什么特别之处。我碰到一个环境,数据延迟时好时坏,很不稳定,听起来很棘手,我们来简单看看。

日志如下:

RFS[1]: Opened log for thread 1 sequence 476185 dbid 1210367666 branch 622336050
Wed Feb 08 11:55:23 2017
Media Recovery Log /U01/app/oracle/oradata/sol/arch/SOL/archivelog/2017_02_08/o1_mf_1_476184_d9o2rzdc_.arc
Media Recovery Waiting for thread 1 sequence 476185 (in transit)   出现这种情况,基本可以断定是差一个归档。

   我们看看主备库的日志文件的情况。
   查看备库的standby log情况:

SQL> select group#,bytes from v$standby_log;
    GROUP#      BYTES
---------- ----------
        21  524288000
        22  524288000
。。。

 主库的online log情况:

SQL>  select group#,bytes,status from v$log
    GROUP#      BYTES STATUS
---------- ---------- ----------------
         1  209715200 INACTIVE
         2  209715200 INACTIVE
         3  209715200 INACTIVE
         4  209715200 INACTIVE
         5  209715200 INACTIVE
         6  209715200 INACTIVE
         7  524288000 INACTIVE
         8  629145600 INACTIVE
         9 1073741824 CURRENT
        10 1073741824 INACTIVE    如果到了这里,想必就会清晰很多了,主库中的online log大小不一,看起来是经过了多次设置,估计最开始设置为200M,感觉有些小了,后面改进,设置成了500M,估计还是差强人意,就改成了1G。其实这个日志是可以做调整设置的,而不是一锤子买卖,肯定能修改。      
    如果出现延迟,很可能就是和日志的大小情况有关,主库的小,备库的大,暂时不会出现问题,如果主库的大,备库的小,那就有问题,或者备库没有standby log,也是如此。

一个较为正常的备库的alert日志情况如下,假设归档设置是默认的情况下。会有下面的额外两行尤其需要关注,你可以看到standby log被引用。

RFS[1]: Selected log 23 for thread 1 sequence 476186 dbid 1210367666 branch 622336050
Media Recovery Log /U01/app/oracle/oradata/sol/arch/SOL/archivelog/2017_02_08/o1_mf_1_476185_d9o5ocmt_.arc
Wed Feb 08 14:14:06 2017
Media Recovery Waiting for thread 1 sequence 476186 (in transit)
Recovery of Online Redo Log: Thread 1 Group 23 Seq 476186 Reading mem 0
  Mem# 0: /U01/app/oracle/oradata/sol/arch/SOL/onlinelog/o1_mf_23_d9ofo81j_.log
    所以说,任何看起来复杂的问题的原因都会很简单,明确了问题,解决起来就会得心应手。
 

   

   

时间: 2024-09-20 12:45:38

Oracle Data Guard延迟的几个可能(r11笔记第69天)的相关文章

Data Guard故障自动切换的想法(r11笔记第40天)

    大概在2年前,我写过一篇文章,当时也算是随感.由Gavin King的故事所做的感悟 (r4笔记第24天),年轻嘛,都是意气风发,想好好撸起袖子大干一场.     但是可能很多人都会碰到了这样一个问题,那就是在公司内造轮子的情况非常普遍,而且很多时候一个脚本,工具,系统只是适用于具体的业务,脱离了系统平台,部门之外,公司之外都无法适用.很多应用要联系具体场景,这个无可厚非,就如同一个表test,含有3个字段,里面可以存放100条应用数据,也可以存放200条,这个是根据具体业务具体对待的.

Oracle Data Guard压缩归档效果对比(r12笔记第26天)

   Oracle Data Guard对归档的传输提供了很多辅助的选项,这个可 以通过log_archive_dest_x看到.    一般说这类的优化,如果有大批量的归档需要传输,对于网络带宽还真是一个不小的冲击,有一种改进方法,就是打包压缩归档,然后传输到备库,然后解压应用,整个过程有几个地方需要注意,整个过程肯定会有延迟,而且还不小,在压缩和解压的过程对系统资源会有一个持续的耗用.而好处也相对明显很多,就是对于带宽的占用会有一定的压缩.所以一句话总结,如果压缩备份,对系统会有额外的资源消

Oracle Data Guard 理论知识

Oracle Data Guard 理论知识   来源:Linux社区 作者:tianlesoftware       RAC,Data Gurad,Stream是Oracle高可用性体系中的三种工具,每个工具即可以独立应用,也可以相互配合.他们各自的侧重点不同,适用场景也不同.   RAC它的强项在于解决单点故障和负载均衡,因此RAC方案常用于7*24的核心系统,但RAC方案中的数据只有一份,尽管可以通过RAID等机制可以避免存储故障,但是数据本身是没有冗余的,容易形成单点故障.   Data

Oracle Data Guard学习(2) 日志传输

Oracle Data Guard从宏观上来说,主要提供以下两个服务: 1)日志传输:主库把生成的Redo日志传输至备库: 2)日志应用:备库应用从主库传输过来的Redo日志. 本文先介绍其中的日志传输服务,日志应用服务在下节<Data Guard 系列(3) - 日志应用>介绍 . 1. 日志传输方式 有两种日志传输方式(ARC和LGWR),第一种是采用ARC进程传输日志,其示意图如下: 注:上图来自<大话Oracle RAC> 其大致过程如下: 1)主库:日志先写入在线重做日志

Oracle Data Guard CPU/PSU补丁安装教程

非Data Guard的补丁安装教程可参考<[Oracle] CPU/PSU补丁安装教程>,Data Guard需要Primary 和Standby同时打上补丁,所以步骤更复杂一些,其主要步骤如下: 在Primary停止日志传输服务: 关闭Standby数据库,在Standby的软件上打补丁(注意:不需要 为Standby数据库打补丁),启动standby为mount状态,不启用managed recovery: 关闭Primary, 在Primary的软件和数据库本身都打上补丁: 启动Pri

Oracle]Data Guard 之 Redo传输详解

Data Guard主要提供两个服务:1)Redo传输服务:即把Primay端的Redo日志传输到一个或多个Standby目的地. 2)Redo应用服务:即在Standby端应用从Primay端传输过来的Redo日志. 本文先讲讲其中的Redo传输服务. 1.使用ARCn传输Redo日志默认情况下采用ARCn传输redo日志,不过只有在最高性能模式下才可以使用ARCn(具体可参考<Oracle] Data Guard 之 三种保护模式介绍 >),采用ARCH传输Redo日志的示意图如下:其大致

Oracle Data Guard创建物理Standby数据库

Oracle Data Guard创建物理Standby数据库 创建物理备库 机器名 a1 a2 IP: 192.168.1.10 192.168.1.20 Net_Name a1 a2 SID a1 a2 DB_UNIQUE_NAME a1 a2 注:主节点上创建数据库a1,备节点上只安装oracle软件不创建任何数据库; 1.配置listener.ora 主节点listener.ora: SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (GLOBAL_DBN

DG8——有关Oracle Data Guard Failover 的说明

原文转自:http://blog.csdn.net/tianlesoftware/article/details/6256542 在之前的两篇文章里都对oracle Data Guard的Failover 进行了说明,但是没有个系统的说明,所以在这篇把DG的Failover 做个系统的说明.          物理Data Guard 下Failover 时Redo 的处理问题        http://blog.csdn.net/tianlesoftware/archive/2010/11/

数据库主备切换-Oracle Data Guard 切换数据库无成功反馈

问题描述 Oracle Data Guard 切换数据库无成功反馈 Oracle Data Guard 切换数据库 切换主库为备库输入 Alter database commit to switchover to physical standby with session shutdown; 后不出现Database altered提示 没有任何反馈信息 这是什么原因? 解决方案 http://wenku.baidu.com/link?url=SgdMwsixAP6-wPLqV99ulf6qbi