签到成功

知道了

CNDBA社区CNDBA社区

Orcle 12c DG 新特性---Active Data Guard Real-Time Cascade

2017-08-17 12:21 3740 0 原创 Oracle 12c DG
作者: Expect-乐

说明

A standby database that cascades redo to other standby databases can transmit redo directly from its standby redo log file as soon as it is received from the primary database. Cascaded standby databases receive redo in real-time. They no longer have to wait for standby redo log files to be archived before redo is transmitted.

http://www.cndba.cn/Expect-le/article/2133

启用real-time redo,不需要等归档standby redo日志文件,然后再传输到级联备库上。

As of Oracle Database 12c Release 1 (12.1), a cascading standby database can either cascade redo in real-time (as it is being written to the standby redo log file) or non-real-time (as complete standby redo log files are being archived on the cascading standby).

12c开始,支持real-time级联redo(等写入备库redo log)

限制:

Only physical standby databases can cascade redo.

Real-time cascading requires a license for the Oracle Active Data Guard option.

Non-real-time cascading is supported on destinations 1 through 10 only. (Real-time cascading is supported on all destinations.)

If you specify ASYNC transport mode on destinations 1 through 10, then redo is shipped in real-time. If you do not specify a transport mode or you specify SYNC on destinations 1 through 10, then redo is shipped in non-real-time. Destinations 11 through 31 operate only in ASYNC (real-time) transport mode.

在用于级联的备库中的LOG_ARCHIVE_DEST_n(1..10)指定ASYNC,则是real-time。如果不指定,或者指定SYNC,则是non-real-time

LOG_ARCHIVE_DEST_n(11..31)只支持ASYNC,即real-time传输模式。

http://www.cndba.cn/Expect-le/article/2133

实验

搭建级联备库参考:http://www.cndba.cn/Expect-le/article/2131

2.1   查看当前DG配置

SQL> select * from V$DATAGUARD_CONFIG;
DB_UNIQUE_NAME	       PARENT_DBUN	      DEST_ROLE CURRENT_SCN	CON_ID
------------------------------ ------------------------------ ----------------- ----------- ----------
cndba_p        NONE	      PRIMARY DATABASE	    2122746	     0
cndba_s        cndba_p	      PHYSICAL STANDBY	    2122754	     0
cndba_ss	       cndba_s	      PHYSICAL STANDBY	    2112269	     0

  

INSTANCE_NAME

DB_UNIQUE_NAME

Oracle Net Service

Primary

cndba

cndba_p

cndba_p

Cascading Standby

cndba

cndba_s

cndba_s

Cascaded Standby

cndba

cndba_ss

cndba_ss

2.2   查看用于级联的备库参数--启用real-time redo

SQL> show parameter LOG_ARCHIVE_DEST_2
NAME	     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2	     string	 SERVICE=cndba_ss ASYNC NOAFFIRM VALID_FOR=(ST
                                          ANDBY_LOGFILES,STANDBY_ROLE) D
                                          B_UNIQUE_NAME=cndba_ss

可以看到启用real-time redo cascade

http://www.cndba.cn/Expect-le/article/2133

2.2.1  主库创建表,查看日志序列号

http://www.cndba.cn/Expect-le/article/2133

SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
-------------
    51

--创建表,并插入数据http://www.cndba.cn/Expect-le/article/2133

SQL> create table cndba(id number);
Table created.

SQL> insert into cndba select object_id from dba_objects;
90947 rows created.

SQL> commit;
Commit complete.

SQL> select count(*) from cndba;
  COUNT(*)
----------
     90947

--可以看到日志没有发生切换

SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
    51

http://www.cndba.cn/Expect-le/article/2133

2.2.2  查看用于级联(Cascading )备库表

http://www.cndba.cn/Expect-le/article/2133

SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
    51 --日志序列号没有变化,表示没有发生日志切换

SQL>  select count(*) from cndba;
  COUNT(*)
----------
     90947  --由于DG默认启用实时redo应用,所以Cascading备库数据实时传输过来,下面注意是验证cascaded数据是否传输过来。

2.2.3  查看级联(cascaded)的备库表

SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
    51   --同样日志序列号没有变化。

SQL> select count(*) from cndba;
  COUNT(*)
----------
     90947  --数据已经传输过来了,符合预期。

从日志中也可以查看出来:http://www.cndba.cn/Expect-le/article/2133

Recovery of Online Redo Log: Thread 1 Group 4 Seq 51 Reading mem 0

  Mem# 0: /u01/app/oracle/fast_recovery_area/CNDBA_SS/onlinelog/o1_mf_4_ds84tg8t_.log

2.3   修改用于级联备库(Cascading )的参数-启用non-real-time

SQL> alter system set LOG_ARCHIVE_DEST_2='SERVICE=cndba_ss SYNC VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=cndba_ss' scope=both;
System altered.

SQL> show parameter LOG_ARCHIVE_DEST_2
NAME	     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2	     string	 SERVICE=cndba_ss SYNC VALID_FO
                                         R=(STANDBY_LOGFILES,STANDBY_RO
                                        LE) DB_UNIQUE_NAME=cndba_ss

2.3.1  主库插入数据

http://www.cndba.cn/Expect-le/article/2133

SQL> insert into cndba select object_id from dba_objects;
90947 rows created.

SQL> commit;
Commit complete.

SQL> select count(*) from cndba;
  COUNT(*)
----------
    181894

SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
    51  

2.3.2  查看用于级联(Cascading )备库表

SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
    51

SQL> select count(*) from cndba;
  COUNT(*)
----------
    181894

2.3.3  查看级联(cascaded)的备库表

SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
    51

SQL> select count(*) from cndba;
  COUNT(*)
----------
181894  --可以看到数据没有同步过来。

从日志也可以看出来:当前日志时51,等52日志来进程恢复。

Media Recovery Waiting for thread 1 sequence 52

至此对于Real-time redo的介绍已经结束了。该特性还是非常有用的,对于数据容灾更加可靠。http://www.cndba.cn/Expect-le/article/2133

版权声明:本文为博主原创文章,未经博主允许不得转载。

Active Data Guard Real-Time Cascade

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
Expect-乐

Expect-乐

关注

Without the continuous bitter cold, there can be no fragrant plum blossom

  • 336
    原创
  • 6
    翻译
  • 100
    转载
  • 41
    评论
  • 访问:1367359次
  • 积分:1957
  • 等级:核心会员
  • 排名:第3名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ