之前,原本已经尝试过配置oracle实例的逻辑和物理standby结构,并且做个一些role交换操作,可是由于昨天学习rman的部分命令时没留意,误删掉了primary DB上的所有归档日志,因为原来是在maximum protection模式下,standby DB上还存在archivel gap,结果之前搭建的standby实验环境彻底挂了,primary DB也自动停了。我只好把primary DB在nomount模式下改为maximum performance模式,并将控制standby redo log传输的log_archive_dest_state_n设置为defer,才把primary DB启动起来。现在,除了重建standby,还没找到其他的弥补方法,看来对data guard的理解还是停留在照猫画虎的操作上,根本米有理解它的原理啊。所以重新来过,从基础开始好了。

首先,data guard的主要原理主要是primary DB将所有操作产生的redo log 传输到standby DB上,在由standby DB对此进行应用的。从而产生一个一致的standby DB。在data guard中,存在两类SYNC和ASYNC,下面分别描述两类的工作方法,从而进一步认识它的原理。

下图是SYNC模式的流程图。         1、当user 发出 commit命令后,将产生一条 redo record (也称作redo entry)放入SGA中的 redo buffer 中,后台进程LGWR将读取此redo record,将其写入online redo log file。并等待从LNS进程传来的确认信息。         2、LNS(Log Network Server) 进程同样从redo log buffer读取redo record,并将其通过Oracle Net Services传输给standby DB。在standby DB上的RFS后台进程将接收到的redo record写入standby database中。         3、当RFS确定写入所有的redo record到磁盘后,向primary DB的LNS发送确认信息。当LGWR收到LNS转发的确认信息后,才返回commit成功的消息给user。

接下来来看ASYNC:类似于SYNC,只是primary DB上的LGWR可以不必等待LNS的确认信息,而且LNS可以读取online redo log中的redo record。对于ASYNC,就可以考虑使用压缩方式传输redo record,从而节省带宽,但是这会使CPU的利用升高。此外,如果LNS在读取online redo log中记录时刚好遇到online switch,则可能造成standby的archivelog gap。LNS的不同步记录,在提高性能的同时也可能会产生数据的丢失。

对于redo log的gap的处理,oracle的data guard有自己的自动处理方法。log file gap主要出现在primary DB上不断有事务被提交,同时,LNS可能由于网络或是standby DB的问题,不能及时同步造成的。此时,primary DB会继续运行,循环使用redo logs,并进行归档。Data Guard会在primary DB上使用一个ARCH进程不断的ping standby DB。当与standby DB可以进行通信时,ARCH的ping进程会通过RFS查询standby的控制文件,获得上一次完成log同步的SCN从而确定从哪一个归档log开始进行同步,从而填补gap。当完成这一步,会自动过度到从当前的日志文件中同步。具体的流程图如下:

对于物理standby来说,它应用接受到的redo record是按下图的方式的:

redo apply维持一个standby database是通过精确的物理块来进行primary DB的备份的。RFS进程从primary DB接收到redo record,并将其写入standby redo log(后面将被简称为SRL)。redo apply通过介质恢复,将SRL中的redo record读入内存中,介质恢复协调器(MRP0)管理恢复session,iang具有相同SCN的redo进行合并(这多是在RAC环境中),并分析redo映射到不同的 apply 进程。不同的 apply 进程读取映射的数据块,并将其写入相应改变的数据块。redo apply 会自动设置与cpu数目相等的 apply 进程。

对于使用 sql apply 的逻辑standby,其具体使用 redo 如下图

        SQL apply使用的是逻辑 standby 进程进行协调应用相应的redo log中的改变。sql apply进程读取SRL,并将其转化为逻辑的记录改变,并建立SQL事务,并应用这些SQL到standby DB上。显然相对于redo apply,sql apply 更耗费cpu、io和内存等资源。

Dataguard中日志传输服务的更多相关文章

  1. dataguard 日志传输服务

    1.日志传输可以分为 lgwr和ARCH,默认是arch,其中lgwr传输可以分为async和syncsync:同步服务,只有在事物参数的日志成功的传输到备库的目的地,事物才能提交.虽然同步服务没有限 ...

  2. Dataguard之redo传输服务

    一.Data Guard架构 整个Data Guard体系就是围绕三个关键点展开: 日志发送(Redo Send) 日志接收(Redo Receive) 日志应用(Redo Apply) 二.日志发送 ...

  3. ORACLE DATAGUARD 日志传输状态监控

    ORACLE DATAGUARD的主备库同步,主要是依靠日志传输到备库,备库应用日志或归档来实现.当主.备库间日志传输出现GAP,备库将不再与主库同步.因此需对日志传输状态进行监控,确保主.备库间日志 ...

  4. Windows平台下Oracle监听服务启动过程中日志输出

    Windows平台下Oracle监听服务启动过程中日志输出记录. 日志目录:D:\app\Administrator\diag\tnslsnr\WIN-RU03CB21QGA\listener\tra ...

  5. Oracle DataGuard日志传输

    1. 日志传输方式 有两种日志传输方式(ARC和LGWR),第一种是采用ARC进程传输日志,其示意图如下: 注:上图来自<大话Oracle RAC> 其大致过程如下: 1)主库:日志先写入 ...

  6. linux下syslog-ng日志集中管理服务部署记录

    syslog是Linux系统默认的日志守护进程,默认的syslog配置文件是/etc/syslog.conf文件.syslog守护进程是可配置的,它允许人们为每一种类型的系统信息精确地指定一个存放地点 ...

  7. Linux下rsyslog日志收集服务环境部署记录

    rsyslog 可以理解为多线程增强版的syslog. 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL.PostgreSQL.Oracle等).日志内容筛选.定义日志格式模板等.目 ...

  8. Linux下rsyslog日志收集服务环境部署记录【转】

    rsyslog 可以理解为多线程增强版的syslog. 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL.PostgreSQL.Oracle等).日志内容筛选.定义日志格式模板等.目 ...

  9. 如何在IIS中设置HTTPS服务

    文章:https://support.microsoft.com/en-us/help/324069/how-to-set-up-an-https-service-in-iis 在这个任务中 摘要 为 ...

随机推荐

  1. CSS实现:标题两侧画线效果

    如图: html代码: <div class="detail-news"> <h5 class="detail-news-title"> ...

  2. BI--SAP BI的权限管理

    源地址 :http://silverw0396.iteye.com/blog/229274 一.sapBI的用户分类 There are different types of users in SAP ...

  3. 组策略分发Adobe Reader 11教程

    1, 实验环境 域控:Windows Server 2012 R2 客户端:Windows 7 Adobe Reader 版本:11.0.00 2, 获取分发 Adobe Reader 的许可协议 按 ...

  4. LeetCode: Longest Common Prefix 解题报告

    Longest Common Prefix Write a function to find the longest common prefix string amongst an array of ...

  5. 新的开始——LED灯汇编机器码的点亮方式

    在几个月前看2440视频的时候,发现太多知识欠缺,购买开发板期间补习makefile,linux,arm汇编和arm构架之后,现在重新开始学习. 先看板子LED硬件连接图: 可以看到LED 1,2,4 ...

  6. python -- numpy 基本数据类型,算术运算,组合,分割 函数

    0 NumPy数组 NumPy数组:NumPy数组是一个多维数组对象,称为ndarray.其由两部分组成: 实际的数据 描述这些数据的元数据 NumPy数组属性: ndim(纬数,x,y 2),sha ...

  7. 用Total Commander for Android管理应用程序

    用Total Commander for Android管理应用程序 前不久安装了一个Total Commander的Anroid版本,除了用它来管理文件之外,我发现用它管理已安装程序挺不错的. 可以 ...

  8. quartz定时任务框架的使用以及原理

    quartz定时任务时间设置 这些星号由左到右按顺序代表 :     *    *     *     *    *     *   *                                 ...

  9. Install Shield常用函数以及参数

    nstall Shield函数库 1  库函数综述InstallShield包含300多个内部库函数,用户可在安装脚本中调用它们来创建程序组,操作文件夹,处理目录,监督安装状态,创建对话框,操作文件及 ...

  10. slf4j+log4j2 pom配置

    <!-- log start --> <dependency> <groupId>org.slf4j</groupId> <artifactId& ...