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. Java根据年度将数据分组

    现在有这么一组数据 code                   name                year 45615654           x1                      ...

  2. 判断人员js

    var allchooseEmpID = "";var allchooseEmpName = "";//自选经办人 function getJbrWinForM ...

  3. 小HY的四元组

    4.7 比赛T1,然而这题爆零了 其实很简单的...其实哈希都不用 所以首先记录每组的差值,按其sort一下再暴力找即可 #include<cstdio> #include<iost ...

  4. 关于 android屏幕适配

    一.关于布局适配 1.不要使用绝对布局 2.尽量使用match_parent 而不是fill_parent . 3.能够使用权重的地方尽量使用权重(android:layout_weight) 4.如 ...

  5. [转] 64位Oracle 11g R2的客户端连接时报ORA-01019错误

    本文转自:http://blog.csdn.net/downmoon/article/details/8038583 在Win8企业版64位环境下,连接Oracle11g 服务端,搞了整整两天,特将过 ...

  6. Java系列学习(十二)-开始Eclipse

    1.用Eclipse来写一个HelloWorld (1)选择工作空间 工作空间其实就是我们写的源代码所在的目录 (2)创建一个Java项目 [File-New-Java Project] (3)创建包 ...

  7. Java_注解之二

    在上一次的注解案例里面配置注解的同时,也添加了一对多(@OneToMany)的关系在里面. 本次将补充上次的缺失:其他三种关联方式的配置. 为了简化配置的复杂度   在此案例中Emp和Dept并不是唯 ...

  8. iOS CoreData 开发之数据模型关系

    接着上一篇,上一篇中,我们简单的实现了一个用户实体,本次添加一个用户信息实体,与用户实体相关联,关系为1:1. 新建一个实体UserInfo:

  9. 微信自定义分享功能实现Tips

    以MVC为例 前台js通过.post()方法传给后台特定Controller当前页面的url,后台获取后,进行处理: 1.获取access_token:https://mp.weixin.qq.com ...

  10. 获取Google地图位置坐标并嵌入到网页

    有时候做网页的时候,可能需要一个地图显示,可能会用到Google地图,所以就分享一下get到的新技能.在网上查资料的时候有这种方式 但是我没做成功,所以找了其他的方式. 首先,打开Google地图,查 ...