首页 > 其他 > 详细

data guard 的redo 传输

时间:2014-03-12 05:58:29      阅读:458      评论:0      收藏:0      [点我收藏+]

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端的归档情况

bubuko.com,布布扣
SELECT 
    MAX(SEQUENCE#), THREAD# 
FROM 
    V$ARCHIVED_LOG 
WHERE 
    RESETLOGS_CHANGE# = (SELECT MAX(RESETLOGS_CHANGE#) FROM V$ARCHIVED_LOG)  
GROUP BY 
    THREAD#;
bubuko.com,布布扣

 

查看standby端归档应用的情况

bubuko.com,布布扣
SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG   ORDER BY SEQUENCE#;
bubuko.com,布布扣

 

查看archive dest的归档情况

bubuko.com,布布扣
SELECT 
    DESTINATION, STATUS, ARCHIVED_THREAD#, ARCHIVED_SEQ#  
FROM 
    V$ARCHIVE_DEST_STATUS  
WHERE 
    STATUS <> DEFERRED AND STATUS <> INACTIVE;
bubuko.com,布布扣

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

 

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

bubuko.com,布布扣
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#);
bubuko.com,布布扣

 

 

同时,通过下面的视图可以知道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来查看。

bubuko.com,布布扣
select * from v$archive_gap;
bubuko.com,布布扣

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

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

bubuko.com,布布扣
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#;
bubuko.com,布布扣

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

data guard 的redo 传输,布布扣,bubuko.com

data guard 的redo 传输

原文:http://www.cnblogs.com/kramer/p/3594061.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!