data guard 通过把redo从primary数据库传输到standby数据库并应用在standby数据库来实现自己的功能。 redo 传输是有2种模式

1. 同步 sync

2. 异步 async

同步就是指一个transaction在commit之前必须把redo传输到standby,而异步则是指commit不必等redo传输就可以commit成功。

data guard中的redo 传输是通过参数 log_archive_dest_n来配置的,下面的两个配置就对应了同步和异步模式。

log_archive_dest_8='SERVICE=itid2 SYNC    VALID_FOR=( ONLINE_LOGFILES,PRIMARY_ROLE)  DB_UNIQUE_NAME=itid2'

log_archive_dest_2='SERVICE=itid2 ASYNC  VALID_FOR=( ONLINE_LOGFILES,PRIMARY_ROLE)  DB_UNIQUE_NAME=itid2'

要注意的是sync只能配置在 log_archive_dest_1-10这10个参数之间。

log_archive_dest_n这个参数对于理解redo传输特别重要。它可以配置

1. 把redo archive到本地

2. 把redo archive到远端比如standby

3. 从standby redo log中提取redo 生成archive

4. 同步异步

。。。

当检查primary和standby之间redo传输情况的时候可以通过以下几个SQL

查看primary端的归档情况

SELECT
MAX(SEQUENCE#), THREAD#
FROM
V$ARCHIVED_LOG
WHERE
RESETLOGS_CHANGE# = (SELECT MAX(RESETLOGS_CHANGE#) FROM V$ARCHIVED_LOG)
GROUP BY
THREAD#;

查看standby端归档应用的情况

SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG   ORDER BY SEQUENCE#;

查看archive dest的归档情况

SELECT
DESTINATION, STATUS, ARCHIVED_THREAD#, ARCHIVED_SEQ#
FROM
V$ARCHIVE_DEST_STATUS
WHERE
STATUS <> 'DEFERRED' AND STATUS <> 'INACTIVE';

这个视图包含了各个archive dest的很多详细信息,非常有用。

查看某个dest是不是有log没有收到

SELECT
LOCAL.THREAD#, LOCAL.SEQUENCE#
FROM
(SELECT THREAD#, SEQUENCE# FROM V$ARCHIVED_LOG WHERE DEST_ID=1) LOCAL
WHERE
LOCAL.SEQUENCE#
NOT IN
(SELECT SEQUENCE# FROM V$ARCHIVED_LOG WHERE DEST_ID=2 AND THREAD# = LOCAL.THREAD#);

同时,通过下面的视图可以知道redo传输的效率

V$REDO_DEST_RESP_HISTOGRAM

V$REDO_DEST_RESP_HISTOGRAM provides statistical information for each redo transport destination.

Column Datatype Description
DEST_ID NUMBER A non-negative integer value from 1 - 10 for each possible LGWR SYNC standby destination
TIME VARCHAR2(20) A text string that shows the last wall-clock time that a bucket was hit
DURATION NUMBER A positive integer value that represents a bucket of seconds, 1, 2, 3, up to 300 seconds, followed by 5 additional buckets that represent 600, 1200, 2400, 4800, and 9600 ( >= 4801) seconds
FREQUENCY NUMBER A non-negative integer that shows the number of times a particular bucket was hit by theSYNC LNS process

想理解这个视图可以参考oracle dataguard 官方文档 Monitoring Synchronous Redo Transport Response Time

查看redo gap

redo 在 primary 和 standby之间传输的时候可能会有一些gap,可以通过下面的方法来查看这些gap并修复。

如果是physical standby 可以通过下面的SQL来查看。

select * from v$archive_gap;

要注意的是,这个视图只会返回那些能影响redo apply的gap,也就是说gap发生在一个thread的中间可以被检测到,如果发生在末尾就检测不到。

如果是logical standby可以通过下面的SQL来查看。

SELECT
THREAD#, SEQUENCE#, FILE_NAME
FROM
DBA_LOGSTDBY_LOG L
WHERE
NEXT_CHANGE#
NOT IN
(SELECT FIRST_CHANGE# FROM DBA_LOGSTDBY_LOG
WHERE L.THREAD# = THREAD#)
ORDER BY
THREAD#, SEQUENCE#;

如果是没有gap上面的查询只会返回一行,返回多于一行说明有gap。

data guard 的redo 传输的更多相关文章

  1. Data Guard组件等相关介绍

    1.Data Guard组件介绍  Data Guard架构归类为3个主要的组件. Data Guard 重做传输服务  重做传输服务用来将主数据库生成的重做数据传输给备用数据库. Data Guar ...

  2. 浅析Oracle 12c中Data Guard新特性

    浅析Oracle 12c中Data Guard新特性   写在前面 无论是做Oracle运维的小伙伴还是老伙伴,想必对Oracle数据库的数据级灾备核心技术—Data Guard是再熟悉不过了!这项从 ...

  3. Oracle data guard学习

    Oracle data guard学习:三思笔记 Data guard 1data guard结构: data guard是一个集合,由一个primary数据库(生产数据库)和一个或多个standby ...

  4. Notes from Data Guard

    There are two types of Standby databases: 1, Physical standby database block-for-block basis the phy ...

  5. 如何计算Data Guard环境中Redo所需的网络带宽传输 (Doc ID 736755.1)

    How To Calculate The Required Network Bandwidth Transfer Of Redo In Data Guard Environments (Doc ID ...

  6. Oracle Data Guard的配置

    概述 Oracle Data Guard 是针对企业数据库的最有效和最全面的数据可用性.数据保护和灾难恢复解决方案.它提供管理.监视和自动化软件基础架构来创建和维护一个或多个同步备用数据库,从而保护数 ...

  7. ORACLE 11g 用Duplicate恢复Data Guard 备库详细过程

    1.先查找备库控制文件路径 先在备库上找出控制文件的路径,通过和主库一样,不过为了以防万一,还是check为好. SQL>  select name from v$controlfile; NA ...

  8. Oracle 11gR2 Database和Active Data Guard迁移案例

    客户一套核心系统由一台Oracle Database 11.2.0.3.4单机和一台Active Data Guard组成,分别运行在两台PC服务器上,Oracle Linux 5.8 x86_64b ...

  9. Oracle Data Guard

    DG 是 Oracle Data Guard 的简称.也就是Oracle11g的 数据卫士. 由于在工作中 Oracle和 SQL SERVER2008 同时都需要维护管理.给我的感觉这里的 DG 其 ...

随机推荐

  1. sql 查询出当天记录数据

    select updatetime,NewComment,HistoryID,sum(1) over(partition by UpdateTime) from LPProjectHistoryord ...

  2. MySQL 批量插入值

    MySQL 批量插入值 今天遇到个问题,需要从类似以下语句中的各个小括号[其实也有中括号等]抽取相关字段进行组合[相关规则,此处略去不提],并保存到数据库中,此时如果每次插入一条,会连续进行多次插入, ...

  3. 【知识总结】快速傅里叶变换(FFT)

    这可能是我第五次学FFT了--菜哭qwq 先给出一些个人认为非常优秀的参考资料: 一小时学会快速傅里叶变换(Fast Fourier Transform) - 知乎 小学生都能看懂的FFT!!! - ...

  4. nginx深入

    1.编译安装配置完成 /opt/nginx11/html/index.html 这是网页的首页文件 2. nginx.conf主配置文件学习 ############################# ...

  5. Android内存管理(10)MAT: 基本教程

    原文: http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.mat.ui.help%2Fgettingstarted%2Fbasic ...

  6. Spring Cloud (6) 分布式配置中心-高可用

    高可用 现在已经可以从配置中心读取配置文件了,当微服务很多时都从配置中心读取配置文件,这时可以将配置中心做成一个微服务,将其集群化,从而达到高可用. 改造config-server 加入eureka ...

  7. Sublime Text2安装emmet

    一.安装Package Control 如果Preferences中没有Package Control,需要手动安装.安装方法如下: 访问Package Controls站点复制一段python命令安 ...

  8. brew update失败提示:/System/Library/Frameworks/Ruby.framework/的解决方法

    本文由@ray 出品,转载请注明出处.  文章链接:http://www.cnblogs.com/wolfray/p/8040701.html 想用brew安装wget,但是提示失败,然后想先 bre ...

  9. Python常用的标准库及第三方库

    标准库Python拥有一个强大的标准库.Python语言的核心只包含数字.字符串.列表.字典.文件等常见类型和函数,而由Python标准库提供了系统管理.网络通信.文本处理.数据库接口.图形系统.XM ...

  10. 4.用Redis Desktop Manager连接Redis(Windows)

    相比连接CentOS的Redis,在Windows中的操作简单得让人感动. 所以这里我们使用的服务器系统是Windows Server 2016 R2. 而Windows版本的Redis官方网站并没有 ...