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. P4407 [JSOI2009]电子字典

    传送门 我的哈希打挂了--然而大佬似乎用哈希可以过还跑得很快-- 删除,枚举删哪个字符,记删之后的哈希值存map 插入,相当于在单词里删字符,去对应的map里查找 更改,相当于两个都删掉同一个位置的字 ...

  2. Android 关于android.os.Build介绍

    关于Build类的介绍 这个类为一个获取设备一些初始化信息的类,该类的主要信息都是通过一些static的字段获得: public static final String BOARD The name ...

  3. Linq学习(二)-本次学习用到的资料

    本次学习用到的数据库初始化脚本如下 use KMS create table Blog_User ( UserId ,1), NickName ), CreateTime datetime ) cre ...

  4. python框架之Flask基础篇(一)

    一.第一个hello world程序 # coding=utf-8 from flask import Flask app = Flask(__name__) @app.route('/') def ...

  5. 给网站添加运行时间的JavaScript完整代码

    function secondToDate(second) { if (!second) { return 0; } var time = new Array(0, 0, 0, 0, 0); if ( ...

  6. 怎么用css hack处理各浏览器兼容IE6,IE7,IE8,IE9/ FF

    第一:什么事浏览器兼容性 浏览器兼容性问题又被称为网页兼容性或网站兼容性问题,指网页在各种浏览器上的显示效果可能不一致而产生浏览器和网页间的兼容问题.在网站的设计和制作中,做好浏览器兼容,才能够让网站 ...

  7. Android sensor 系统框架 (一)

    这几天深入学习了Android sensor框架,以此博客记录和分享分析过程,其中难免会有错误的地方,欢迎指出! 这里主要分析KERNEL->HAL->JNI这3层的流程.主要从以下几方面 ...

  8. html5——动画案例(时钟)

    1.秒钟转360度需要60s分60步 2.分针转360度需要3600s分60步 3.秒钟转360度需要43200s分60步 <!DOCTYPE html> <html lang=&q ...

  9. JS——tab切换

    排它思想: 1.先让所有的元素恢复默认值 2.再让选中的元素赋专有的值 3.干掉所有人,剩下我一个 <!DOCTYPE html> <html> <head lang=& ...

  10. Redis系列(一)StackExchange.Redis的使用

    Redis系列(一)StackExchange.Redis的使用 一.DLL安装 用NuGet搜索StackExchange.Redis,然后下载就可以. ConnectionMultiplexer对 ...