ARCH和LGWR进程同步DG日志的区别

我在做Standby RAC实验时,起初使用的是ARCH传输,后来将其改为LGWR传输(实际是LGWR分出的小工进程LNS):

--之前的设置
alter system set log_archive_dest_2='SERVICE=mynas ARCH VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=mynas'; --修改设置,可以在线修改:
alter system set log_archive_dest_2='SERVICE=mynas VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=mynas';

最直观的就是LGWR进程传输可以延迟很低,甚至基本是实时的,即使是ASYNC,另外还有一些细微的差别。

1.ARCH进程传输

主库:

SYS@jyzhao1 >select process, client_process, sequence#, status from v$managed_standby;

PROCESS   CLIENT_P  SEQUENCE# STATUS
--------- -------- ---------- ------------
ARCH ARCH 146 CLOSING
ARCH ARCH 137 CLOSING
ARCH ARCH 147 CLOSING
ARCH ARCH 147 CLOSING

在主库查询可以看到,只有几个归档进程。

备库:

SQL> select process, client_process, sequence#, status from v$managed_standby;

PROCESS   CLIENT_P  SEQUENCE# STATUS
--------- -------- ---------- ------------
ARCH ARCH 146 CLOSING
ARCH ARCH 113 CLOSING
ARCH ARCH 0 CONNECTED
ARCH ARCH 111 CLOSING
RFS ARCH 0 IDLE
RFS UNKNOWN 0 IDLE
RFS UNKNOWN 0 IDLE
RFS ARCH 0 IDLE
RFS UNKNOWN 0 IDLE
RFS UNKNOWN 0 IDLE
MRP0 N/A 147 WAIT_FOR_LOG 11 rows selected. SQL> select * from v$standby_log; GROUP# DBID THREAD# SEQUENCE# BYTES BLOCKSIZE USED ARC STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME LAST_CHANGE# LAST_TIME
---------- ---------------------------------------- ---------- ---------- ---------- ---------- ---------- --- ---------- ------------- ------------ ------------ ------------ ------------ ------------
11 UNASSIGNED 1 0 52428800 512 0 NO UNASSIGNED
12 UNASSIGNED 1 0 52428800 512 0 NO UNASSIGNED
13 UNASSIGNED 1 0 52428800 512 0 NO UNASSIGNED
21 UNASSIGNED 2 0 52428800 512 0 NO UNASSIGNED
22 UNASSIGNED 2 0 52428800 512 0 NO UNASSIGNED
23 UNASSIGNED 2 0 52428800 512 0 NO UNASSIGNED 6 rows selected.

在备库查询可以看到,RFS中也只有ARCH进程,SRLs也都没有使用,即使指定使用using current logfile。

2.LGWR进程传输

主库:

SYS@jyzhao1 >select process, client_process, sequence#, status from v$managed_standby;

PROCESS   CLIENT_P  SEQUENCE# STATUS
--------- -------- ---------- ------------
ARCH ARCH 149 CLOSING
ARCH ARCH 137 CLOSING
ARCH ARCH 148 CLOSING
ARCH ARCH 149 CLOSING
LNS LNS 150 WRITING

我们发现,使用LGWR进程传输,在主库查询可以看到差异,比之前ARCH传输多了一个LNS的进程,这就是LGWR分出来的小工进程。

备库:

SQL> select process, client_process, sequence#, status from v$managed_standby;

PROCESS   CLIENT_P  SEQUENCE# STATUS
--------- -------- ---------- ------------
ARCH ARCH 148 CLOSING
ARCH ARCH 149 CLOSING
ARCH ARCH 0 CONNECTED
ARCH ARCH 115 CLOSING
RFS ARCH 0 IDLE
RFS UNKNOWN 0 IDLE
RFS UNKNOWN 0 IDLE
RFS ARCH 0 IDLE
RFS UNKNOWN 0 IDLE
RFS LGWR 116 IDLE
MRP0 N/A 116 APPLYING_LOG PROCESS CLIENT_P SEQUENCE# STATUS
--------- -------- ---------- ------------
RFS LGWR 150 IDLE
RFS UNKNOWN 0 IDLE 13 rows selected. SQL> select * from v$standby_log; GROUP# DBID THREAD# SEQUENCE# BYTES BLOCKSIZE USED ARC STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME LAST_CHANGE# LAST_TIME
---------- ---------------------------------------- ---------- ---------- ---------- ---------- ---------- --- ---------- ------------- ------------ ------------ ------------ ------------ ------------
11 UNASSIGNED 1 0 52428800 512 0 NO UNASSIGNED
12 2509089778 1 150 52428800 512 6417408 YES ACTIVE 4026243 10-AUG-17 4050942 10-AUG-17
13 UNASSIGNED 1 0 52428800 512 0 NO UNASSIGNED
21 UNASSIGNED 2 0 52428800 512 0 NO UNASSIGNED
22 2509089778 2 117 52428800 512 2767360 YES ACTIVE 4044272 10-AUG-17 4050945 10-AUG-17
23 UNASSIGNED 2 0 52428800 512 0 NO UNASSIGNED 6 rows selected.

我们发现,使用LGWR进程传输,在备库查询可以看到差异,相比之前ARCH传输RFS中只有ARCH进程而言,又多了LGWR 进程,另外SRLs也被正常使用。

alert日志上也有所区别:

**主库:**

Thu Aug 10 09:36:43 2017
ALTER SYSTEM SET log_archive_dest_2='SERVICE=mynas VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=mynas' SCOPE=BOTH;
Thread 1 advanced to log sequence 150 (LGWR switch)
Current log# 2 seq# 150 mem# 0: +DATA1/jyzhao/onlinelog/group_2.262.919999045
Current log# 2 seq# 150 mem# 1: +FRA1/jyzhao/onlinelog/group_2.258.919999049
Thu Aug 10 09:36:45 2017
Archived Log entry 287 added for thread 1 sequence 149 ID 0x958da9ee dest 1:
******************************************************************
LGWR: Setting 'active' archival for destination LOG_ARCHIVE_DEST_2
******************************************************************
ARC3: Standby redo logfile selected for thread 1 sequence 149 for destination LOG_ARCHIVE_DEST_2
LNS: Standby redo logfile selected for thread 1 sequence 150 for destination LOG_ARCHIVE_DEST_2
Thu Aug 10 09:59:59 2017
Setting Resource Manager plan DEFAULT_MAINTENANCE_PLAN via parameter
Thu Aug 10 10:00:00 2017
Starting background process VKRM
Thu Aug 10 10:00:00 2017
VKRM started with pid=44, OS id=7493

可以看到,相比之前,多了“LGWR: Setting 'active' archival for destination LOG_ARCHIVE_DEST_2”字样。

备库:

Thu Aug 10 09:36:42 2017
Archived Log entry 35 added for thread 1 sequence 148 ID 0x958da9ee dest 1:
Media Recovery Log +FRA/mynas/archivelog/2017_08_10/thread_1_seq_148.301.951644203
Media Recovery Waiting for thread 1 sequence 149
Thu Aug 10 09:36:45 2017
Primary database is in MAXIMUM PERFORMANCE mode
Thu Aug 10 09:36:46 2017
RFS[12]: Assigned to RFS process 28007
RFS[12]: Selected log 11 for thread 1 sequence 149 dbid -1785877518 branch 919999037
RFS[13]: Assigned to RFS process 28005
RFS[13]: Selected log 12 for thread 1 sequence 150 dbid -1785877518 branch 919999037
Thu Aug 10 09:36:47 2017
Archived Log entry 36 added for thread 1 sequence 149 ID 0x958da9ee dest 1:
Media Recovery Log +FRA/mynas/archivelog/2017_08_10/thread_1_seq_149.302.951644207
Media Recovery Waiting for thread 2 sequence 115
Thu Aug 10 09:36:48 2017
Primary database is in MAXIMUM PERFORMANCE mode
RFS[14]: Assigned to RFS process 28009
RFS[14]: Selected log 21 for thread 2 sequence 116 dbid -1785877518 branch 919999037
Thu Aug 10 09:36:49 2017
RFS[15]: Assigned to RFS process 28011
RFS[15]: Selected log 22 for thread 2 sequence 115 dbid -1785877518 branch 919999037
Archived Log entry 37 added for thread 2 sequence 115 ID 0x958da9ee dest 1:
Media Recovery Log +FRA/mynas/archivelog/2017_08_10/thread_2_seq_115.303.951644209
Media Recovery Waiting for thread 1 sequence 150 (in transit)
Recovery of Online Redo Log: Thread 1 Group 12 Seq 150 Reading mem 0
Mem# 0: +FRA/mynas/standbylog/standby_group_12.log
Media Recovery Waiting for thread 2 sequence 116 (in transit)
Recovery of Online Redo Log: Thread 2 Group 21 Seq 116 Reading mem 0
Mem# 0: +FRA/mynas/standbylog/standby_group_21.log
Thu Aug 10 10:02:28 2017
RFS[14]: Selected log 22 for thread 2 sequence 117 dbid -1785877518 branch 919999037
Thu Aug 10 10:02:35 2017
Media Recovery Waiting for thread 2 sequence 117 (in transit)
Thu Aug 10 10:02:35 2017
Archived Log entry 38 added for thread 2 sequence 116 ID 0x958da9ee dest 1:
Recovery of Online Redo Log: Thread 2 Group 22 Seq 117 Reading mem 0
Mem# 0: +FRA/mynas/standbylog/standby_group_22.log

可以看到多了“ (in transit)”字样。

这种LGWR传输,即便是默认的ASYNC,正常延迟也都很低,符合绝大部分场景需要:

SQL>  select * from v$dataguard_stats;

NAME                             VALUE                                                            UNIT                           TIME_COMPUTED                  DATUM_TIME
-------------------------------- ---------------------------------------------------------------- ------------------------------ ------------------------------ ------------------------------
transport lag +00 00:00:00 day(2) to second(0) interval 08/10/2017 11:43:37 08/10/2017 11:43:35
apply lag +00 00:00:00 day(2) to second(0) interval 08/10/2017 11:43:37 08/10/2017 11:43:35
apply finish time +00 00:00:00.000 day(2) to second(3) interval 08/10/2017 11:43:37
estimated startup time 26 second 08/10/2017 11:43:37 SQL>

可以看到上面的延迟都是0。实际运维经验,一般11g ADG,不出网络等其他问题,这个延迟基本为0。

ARCH和LGWR进程同步DG日志的区别的更多相关文章

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

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

  2. mysql错误日志及sql日志的区别

    my.ini # power by phpStudy 2014 www.phpStudy.net 官网下载最新版 [client] port=3306 [mysql] default-characte ...

  3. 模拟生产搭建Standby RAC实验环境(11.2.0.4 DG)

    模拟生产搭建Standby RAC实验环境(11.2.0.4 DG) 环境:RHEL 6.5 + Oracle 11.2.0.4 GI.DB 1.需求背景介绍 2.准备工作 3.主库配置 4.备库配置 ...

  4. Oracle 11g DG手工switchover切换标准化流程

    Oracle 11g DG手工switchover切换标准化流程 环境:RHEL 6.5 + Oracle GI 11.2.0.4 + Oracle DB 11.2.0.4 Primary RAC(2 ...

  5. 数据库中的几个概念 - LGWR, ARCH,ASYNC,SYNC,AFFIRM

    双机热备(双机容错)就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务.当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务 双 ...

  6. Oracle DBWR,LGWR,CKPT,ARCH 触发条件 总结

    一.  DBWR写磁盘数据触发条件 1. 当进程在辅助LRU链表和主LRU链表上扫描以查找可以覆盖的buffer header[空闲缓冲区]时,如果已经扫描的buffer header的数量到达一定的 ...

  7. 【DG】[三思笔记]一步一步学DataGuard

    [DG][三思笔记]一步一步学DataGuard 它有无数个名字,有人叫它dg,有人叫它数据卫士,有人叫它data guard,在oracle的各项特性中它有着举足轻理的地位,它就是(掌声)..... ...

  8. Oracle DataGuard日志传输

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

  9. oracle 日志学习(转载)

    一,重做日志概念 重做日志文件(redo log file)对于Oracle数据库至关重要.它们是数据库的事务日志.通常只用于恢复,不过也可以用于以下工作: q 系统崩溃后的实例恢复 q 通过备份恢复 ...

随机推荐

  1. spring注解一次 清除多个缓存

    @Caching(evict = { @CacheEvict(value="cacheName",key="#info.id+'_baojia'",before ...

  2. jquery 封装

    (function($) { var plugName = "teamMingXi"; var teamMingXi = { open : function(type) { var ...

  3. Java注解--实现简单读取excel

    实现工具类 利用注解实现简单的excel数据读取,利用注解对类的属性和excel中的表头映射,使用Apache的poi就不用在业务代码中涉及row,rows这些属性了. 定义注解: @Retentio ...

  4. Mybatis中使用 #{} 和 ${} 向sql传参时的区别

    今天在工作时,使用MyBatis中向sql传递两个参数时,一直显示SQL语法错误,仔细检查,才发现传入的参数被加上了引号,导致传入的参数(要传入的参数是表名)附近出现语法错误. 错误写法: } a } ...

  5. Solr6.6 创建core

    原文:https://github.com/x113773/testall/issues/7 1. 首先在solr-6.6.0目录运行命令,启动solr:`Linux: $ bin/solr star ...

  6. 【Android Developers Training】 105. 显示一个位置地址

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  7. [Android FrameWork 6.0源码学习] View的重绘过程

    View绘制的三部曲,  测量,布局,绘画今天我们分析测量过程 view的测量是从ViewRootImpl发起的,View需要重绘,都是发送请求给ViewRootImpl,然后他组织重绘在重绘的过程中 ...

  8. 我的第一篇博文:C++最初的路-经典的小游戏走迷宫

    写在开始:这个博客建于大二下学期.2年多的学习,从网上借鉴的大牛经验,代码,指导数不胜数,而其中大部分来自别人的博客,于是期待有一天也能把自己在学习过程中的一些经验拿出来与大家分享. 其实我凝望了C+ ...

  9. 浅谈关于特征选择算法与Relief的实现

    一. 背景 1) 问题 在机器学习的实际应用中,特征数量可能较多,其中可能存在不相关的特征,特征之间也可能存在相关性,容易导致如下的后果: 1.     特征个数越多,分析特征.训练模型所需的时间就越 ...

  10. 数据结构(C语言版)顺序栈相关算法的代码实现

    这两天完成了栈的顺序存储结构的相关算法,包括初始化.压栈.出栈.取栈顶元素.判断栈是否为空.返回栈长度.栈的遍历.清栈.销毁栈.这次的实现过程有两点收获,总结如下: 一.清楚遍历栈的概念 栈的遍历指的 ...