在Dataguard环境中配置cascade redo transport

cascade redo transport用在多个standby的环境下,当standby与primary的距离较远需要通过WAN来传输Redo时,为减少传输过程中对primary的压力及网络带宽的占用,仅让其中的一个standby从primary直接接收redo,这个standby就称作cascading standby,而其余的standby从cascading standby接收redo,这些standby称作cascaded standby,cascading standby从中起到了redo转发的功能。比如DG环境中:A是主库、B、C、D都是A的备库,B与A的距离是500KM,B和C、B和D的距离都在50km,这时可以将B库作为cascading standby,把从A收到的redo转发给C、D,这时的C、D就是cascaded standby,因为它们从B库接收redo,而不是从A库直接接收。还有一个限制就是cascaded standby必须是一个physical standby

下面就来看看如何实现cascade redo transport

测试DG环境部署:
prmy:tstdb1
cascading standby:tstdb1_stdby1
cascaded standby:tstdb1_stdby2


###只列出与redo transport相关的参数
---tstdb1:
alter system set db_unique_name=tstdb1;
alter system set log_archive_dest_1='location=use_db_recovery_file_dest valid_for=(all_logfiles,all_roles) db_unique_name=tstdb1' scope=both;
alter system set log_archive_dest_2='service=tstdb1_stdby1 SYNC valid_for=(online_logfiles,primary_role) db_unique_name=tstdb1_stdby1' scope=both;
alter system set log_archive_dest_3='service=tstdb1_stdby2 ASYNC valid_for=(standby_logfiles,standby_role) db_unique_name=tstdb1_stdby2' scope=both;   <---role transition后才会用到的参数
alter system set fal_server=tstdb1_stdby1;
alter system set log_archive_dest_state_1=enable;
alter system set log_archive_dest_state_2=enable;
alter system set log_archive_dest_state_3=enable;
alter system set log_archive_config="dg_config=(tstdb1,tstdb1_stdby1,tstdb1_stdby2)";


---tstdb1_stdby1:
alter system set db_unique_name=tstdb1_stdby1;
alter system set log_archive_dest_1='location=use_db_recovery_file_dest valid_for=(all_logfiles,all_roles) db_unique_name=tstdb1_stdby1' scope=both;
alter system set log_archive_dest_2='service=tstdb1 SYNC valid_for=(online_logfiles,primary_role) db_unique_name=tstdb1' scope=both;   <---role transition后才会用到的参数
alter system set log_archive_dest_3='service=tstdb1_stdby2 ASYNC valid_for=(standby_logfiles,standby_role) db_unique_name=tstdb1_stdby2' scope=both;
alter system set fal_server=tstdb1;
alter system set log_archive_dest_state_1=enable;
alter system set log_archive_dest_state_2=enable;
alter system set log_archive_dest_state_3=enable;
alter system set log_archive_config="dg_config=(tstdb1,tstdb1_stdby1,tstdb1_stdby2)";


---tstdb1_stdby2:
alter system set db_unique_name=tstdb1_stdby2;
alter system set log_archive_dest_1='location=use_db_recovery_file_dest valid_for=(all_logfiles,all_roles) db_unique_name=tstdb1_stdby2' scope=both;
alter system set fal_server=tstdb1_stdby1;
alter system set log_archive_dest_state_1=enable;
alter system set log_archive_config="dg_config=(tstdb1,tstdb1_stdby1,tstdb1_stdby2)";


###在tstdb1_stdby1、tstdb1_stdby2上开启MRP
---tstdb1_stdby1:
alter database recover managed standby database using current logfile disconnect;


---tstdb1_stdby2:
alter database recover managed standby database using current logfile disconnect;


###DG状态查询:
---tstdb1: v$archive_dest里指向LOG_ARCHIVE_DEST_3的状态显示为PENDING,v$archive_dest_status里tstdb1_stdby2的recovery_mode显示为IDLE,表明tstdb1_stdby2的恢复不是通过tstdb1接收日志的
SELECT DESTINATION,db_unique_name,type,STATUS,database_mode,recovery_mode,ARCHIVED_THREAD#,ARCHIVED_SEQ#,applied_seq#,synchronization_status,gap_status FROM V$ARCHIVE_DEST_STATUS WHERE STATUS <> 'DEFERRED' AND STATUS <> 'INACTIVE';
SYS@tstdb1-SQL> SYS@tstdb1-SQL> 
DESTINATION     DB_UNIQUE_NAME  TYPE       STATUS   DATABASE_MODE   RECOVERY_MODE   ARCHIVED_THREAD# ARCHIVED_SEQ# APPLIED_SEQ# SYNCHRONIZATION_STAT GAP_STAT
--------------- --------------- ---------- -------- --------------- --------------- ---------------- ------------- ------------ -------------------- --------
                tstdb1          LOCAL      VALID    OPEN            IDLE                           1           574            0 CHECK CONFIGURATION
tstdb1_stdby1   tstdb1_stdby1   PHYSICAL   VALID    OPEN_READ-ONLY  MANAGED REAL TI                1           574          536 OK                   NO GAP
                                                                    ME APPLY


tstdb1_stdby2   tstdb1_stdby2   UNKNOWN    VALID    UNKNOWN         IDLE                           0             0            0 CHECK CONFIGURATION  LOG SWIT
                                                                                                                                                     CH GAP


SYS@tstdb1-SQL> select dest_name,status,target,archiver,schedule,destination,process,register,transmit_mode,affirm,applied_scn from v$archive_dest where dest_name in ('LOG_ARCHIVE_DEST_1','LOG_ARCHIVE_DEST_2','LOG_ARCHIVE_DEST_3');


DEST_NAME                                          STATUS   TARGET  ARCHIVER   SCHEDULE DESTINATION                    PROCESS    REG TRANSMIT_MOD AFF APPLIED_SCN
-------------------------------------------------- -------- ------- ---------- -------- ------------------------------ ---------- --- ------------ --- -----------
LOG_ARCHIVE_DEST_1                                 VALID    PRIMARY ARCH       ACTIVE   USE_DB_RECOVERY_FILE_DEST      ARCH       YES SYNCHRONOUS  NO            0
LOG_ARCHIVE_DEST_2                                 VALID    STANDBY LGWR       ACTIVE   tstdb1_stdby1                  LGWR       YES PARALLELSYNC YES  1.2723E+13
LOG_ARCHIVE_DEST_3                                 VALID    STANDBY LGWR       PENDING  tstdb1_stdby2                  LGWR       YES ASYNCHRONOUS NO            0
                                                                                                                                                     
---tstdb1_stdby1: tstdb1_stdby2那行的recovery_mode虽然显示为RTA,但实际并非工作在RTA模式,因为cascaded standby必须要等到cascading standby生成完整的archivelog后才能进行recover
SELECT DESTINATION,db_unique_name,type,STATUS,database_mode,recovery_mode,ARCHIVED_THREAD#,ARCHIVED_SEQ#,applied_seq#,synchronization_status,gap_status FROM V$ARCHIVE_DEST_STATUS WHERE STATUS <> 'DEFERRED' AND STATUS <> 'INACTIVE';
SQL> SQL> SQL> SQL> SQL> SQL> SQL> SQL> 
DESTINATION     DB_UNIQUE_NAME  TYPE       STATUS   DATABASE_MODE   RECOVERY_MODE   ARCHIVED_THREAD# ARCHIVED_SEQ# APPLIED_SEQ# SYNCHRONIZATION_STAT GAP_STAT
--------------- --------------- ---------- -------- --------------- --------------- ---------------- ------------- ------------ -------------------- --------
                tstdb1_stdby1   LOCAL      VALID    OPEN_READ-ONLY  MANAGED REAL TI                1           574            0 STATUS NOT AVAILABLE
                                                                    ME APPLY


tstdb1          tstdb1          UNKNOWN    VALID    UNKNOWN         IDLE                           0             0            0 STATUS NOT AVAILABLE NO GAP
tstdb1_stdby2   tstdb1_stdby2   PHYSICAL   VALID    OPEN_READ-ONLY  MANAGED REAL TI                1           574          333 STATUS NOT AVAILABLE NO GAP
                                                                    ME APPLY


                NONE            UNKNOWN    VALID    UNKNOWN         IDLE                           1           574          574 STATUS NOT AVAILABLE


---tstdb1_stdby2:SRLs没有处于ACTIVE状态的
SQL> col member format a50
SQL> col status format a10
SQL> set linesize 130
select f.group#,f.member,l.status from v$logfile f,v$standby_log l where f.group#=l.group# order by group#;SQL> 
    GROUP# MEMBER                                             ARC STATUS
---------- -------------------------------------------------- --- ----------
        11 /oradata06/teststdby2/testaaaaa/stdredo01a.log     NO  UNASSIGNED
        12 /oradata06/teststdby2/testaaaaa/stdredo02a.log     NO  UNASSIGNED
        13 /oradata06/teststdby2/testaaaaa/stdredo03a.log     YES UNASSIGNED
        14 /oradata06/teststdby2/testaaaaa/stdredo04a.log     YES UNASSIGNED


###在tstdb1上进行DML操作,观察到tstdb1_stdby2的结果滞后于tstdb1、tstdb1_stdby1,直到tstdb1执行下一次switch logfile,tstdb1_stdby2的结果才会更新
---tstdb1:
update scott.t0930_1 set username='AAA' where user_id=141;
commit;


SYS@tstdb1-SQL> select * from scott.t0930_1 where user_id=141;


USERNAME                          USER_ID CREATED
------------------------------ ---------- -----------------
AAA                                   141 20150130 16:21:49


---tstdb1_stdby1:
SQL> select * from scott.t0930_1 where user_id=141;


USERNAME                          USER_ID CREATED
------------------------------ ---------- -----------------
AAA                                   141 20150130 16:21:49


---tstdb1_stdby2:
SQL> select * from scott.t0930_1 where user_id=141;


USERNAME                          USER_ID CREATED
------------------------------ ---------- -----------------
FFF                                   141 20150130 16:21:49


---tstdb1:
alter system switch logfile;


---tstdb1_stdby2:
SQL> select * from scott.t0930_1 where user_id=141;




USERNAME                          USER_ID CREATED
------------------------------ ---------- -----------------
AAA                                   141 20150130 16:21:49


###执行switchover使tstdb1、tstdb1_stdby1的角色发生互换
---tstdb1:
alter database commit to switchover to physical standby with session shutdown;
shutdown abort
startup
alter database recover managed standby database using current logfile disconnect;


---tstdb1_stdby1:
alter database commit to switchover to primary with session shutdown;
alter database open;


switchover后DG的状态变为了
prmy:tstdb1_stdby1
cascading standby: tstdb1
cascaded standby:tstdb1_stdby2


###验证一下tstdb1_stdby2能否继续从tstdb1_stdby1接收archivelog
---tstdb1_stdby1:
update scott.t0930_1 set username='BBB' where user_id=141;
commit;


select * from scott.t0930_1 where user_id=141;
USERNAME                          USER_ID CREATED
------------------------------ ---------- -----------------
BBB                                   141 20150130 16:21:49


---tstdb1:
select * from scott.t0930_1 where user_id=141;
USERNAME                          USER_ID CREATED
------------------------------ ---------- -----------------
BBB                                   141 20150130 16:21:49


---tstdb1_stdby2:
select * from scott.t0930_1 where user_id=141;
USERNAME                          USER_ID CREATED
------------------------------ ---------- -----------------
AAA                                   141 20150130 16:21:49


---tstdb1_stdby1:
alter system switch logfile;


---tstdb1_stdby2:
select * from scott.t0930_1 where user_id=141;
USERNAME                          USER_ID CREATED
------------------------------ ---------- -----------------
BBB                                   141 20150130 16:21:49

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/53956/viewspace-1813396/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/53956/viewspace-1813396/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 ADG 11.2 dg部署测试 2 ADG 12c Cascaded-Data Guard配置手册-11 3 ADG 12c Data Guard配置手册-01 4 ADG AIX下Oracle 11G安装及DG配置规范 5 ADG BLOG_Oracle_lhr_一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg 6 ADG Creating Standby Database with Grid Control-15 7 ADG data-guard-far-sync 8 ADG DataGuard环境搭建详细步骤(老方法) 9 ADG Dataguard实操steps 10 ADG Linux+Oracle 11g+RAC+12cc+adg国内业界最详细生产系统下实施文档 11 ADG Linuxel6.5 RAC+DG11204bestpratice 12 ADG Linuxel6.5 RAC+DG11204脚本安装 13 ADG Oracle 10g DataGuard实施文档 14 ADG ORACLE 11G DATAGUARD 搭建(RMAN duplicate方式-相同目录结构) 15 ADG oracle 11g rac+单机dataguard实施文档(详细) 16 ADG Oracle 11g:ORACLE ACTIVE DATA GUARD 17 ADG Oracle 11gR2 使用copy 数据文件搭建物理 Data Guard 18 ADG Oracle 11gR2-Data Guard 单机到集群 19 ADG Oracle 11gR2-Data Guard 单机到集群 20 ADG Oracle 12c dg-setup-rac-phys-standby-to-rac-prim 21 ADG oracle 12cR2 for linux 单机+dataguard实施文档(最详细) 22 ADG Oracle 19c rac+adg 23 ADG Oracle 9i搭建DG方案 24 ADG oracle active dataguard-deep-dive 25 ADG Oracle DataGuard部署 26 ADG oracle_11gR2_x64_RAC+ASM+DG(最新精编版) 27 ADG Oracle_Db_DG环境搭建文图文手册DBA珍藏版 28 ADG Oracle_Db_DG环境搭建文图文手册DBA珍藏版 29 ADG oracle11g adg部署 30 ADG oracle11g on docker for windows10 31 ADG oracle11g-dg不停机部署(终) 32 ADG oracle-active-data-guard 33 ADG rac_dg的搭建_步骤加总结 34 ADG step by step install oracle10gR2 for windows dataguard 35 ADG 某儿童医院_灾备切换演练_实施方案 36 ADG 在Docker上搭建Oracle 11G DG 37 ADG 主rac + 备rac 部署_blog版 38 DG Centos6.10部署Oracle10gDataGuard 39 DG 搭建一主两备 40 Install AIX 6.1上安装oracle 11g 41 Install AIX 7.1上安装Oracle 11g 需要注意的地方 42 Install Centos6.5下安装Oracle 11g 43 Install Centos6.5下安装Oracle 11g 44 Install CentOS7.3环境下Oracle安装手册 45 Install CENTOS7-64位下安装Oracle11g 46 Install Centos7安装Oracle12数据库 47 Install DB 静默安装 48 Install HP-UX平台安装ORA10g 49 Install LAB100 - v5 - Install new 19c software 50 Install Linux_Oracle 10.2.0.5_安装部署手册 净化版 51 Install Linux_Oracle 10.2.0.5_安装部署手册 净化版 52 Install Linux_Oracle_install 53 Install Linux6.5(RHEL6.5)安装ORACLE11g 54 Install Linux7%2Boracle12C安装实战 55 Install LINUX环境下静默安装ORACLE11gR2数据库软件 56 Install Linux下ODI安装 57 Install odi12c安装部署 58 Install Oracle 11.2 在裸设备上创建数据库 59 Install Oracle 12C 18C 19C 操作系统兼容列表及配置要求 60 Install Oracle 12C linux7安装文档 61 Install Oracle 12C linux7安装文档 62 Install Oracle 9i 10g 11g 操作系统兼容列表及配置要求 63 Install Oracle BIEE-12c-Linux安装配置手册 64 Install Oracle Database (RDBMS) on Unix AIX,HP-UX,Linux,Solaris and MS Windows Operating Systems Installation and Configuration Requirements Quick Reference (12.112.218c19c) 65 Install Oracle Database 12c Release 1 Enterprise Edition and Oracle Real Application Clusters on IBM Power Systems with AIX7.1 66 Install Oracle Enterprise Manager上的Oracle企业管理器云控制13c第3版 67 Install Oracle Linux 8上的Oracle Database 19c安装 68 Install Oracle 安装 20140712 69 Install Oracle 补丁介绍及安装操作说明 70 Install OracleLinux6.5下安装Oracle11g_文件系统 71 Install RedHat5.5安装Oracle11G_R2 72 Install rhel7安装oracle10g-11g-12c注意事项 73 Install rhel7安装oracle10g-11g-12c注意事项 74 Install Solaris 10 x86安装oracle12c 75 Install Solaris 10安装oracle 10g 76 Install Solaris 10上的Oracle Database 11g第2版 77 Install ToadforOracle_DBA_Suite_1061Installation_Guide 78 Install 静默安装ORACLE11G数据库 79 Install 在 Solaris 11 SPARC 上安装 Oracle Database 12.1 的要求 (Doc ID 1602904.1) 80 Install 在Oracle Linux 6和7上安装oracle 18c 81 Master Note For Oracle Flashback Technologies (文档 ID 1138253.1) 82 NetBackup_Troubleshoot_Guide 83 OceanStorF面向Oracle数据库OLAP最佳实践 84 OEM Cloud Control 13.3 Installation on Oracle Linux 85 OEM Cloud Control 13.3 on Oracle Linux 7 静默安装 86 OGG goldengate安装文档 87 OGG oracle12c_ogg安装配置 88 OGG 某儿童医院_Oracle OGG&DG部署文档参考 89 openfile + vmware + centos7 90 openfile 安装 91 openfile 的配置方法 92 openfile 逻辑卷管理应用 93 Oracle 11gR2_概念手册文版 94 Oracle 20c+体系结构图 95 Oracle Linux 5和6上的Oracle WebLogic Server 96 Oracle OCP课程实验v1.7 97 Oracle 迁移至 PostgreSQL 在华为 ARM 上的解决方案 98 Oracle 数据库隐含参数设置 99 Oracle 隐含参数 100 Oracle 诊断事件及深入解析10053事件 101 OS deploying-odg-with-oda-1615029 102 OS IBM AIX Oracle 19c-tips Shanmugam Oct2019 103 OS Red_Hat_Enterprise_Linux-6-DM_Multipath-zh-CN 104 OS SharePlex简易使用维护文档 105 OS 配置udev共享存储 106 RAC 10G添加删除节点 107 RAC 11.2.0.4 增删节点详细操作 108 RAC 11204 for Linux(RAC) 环境配置数据库参数最佳实践 109 RAC 12c R2 GI 和RAC 安装文档 110 RAC 19c-rac-linux-install 111 RAC AIX 6.1安装Oracle 11203 112 RAC AIX 部署oracle 11GR2 集群实施报告 113 RAC AX7.3 oracle_rac12.2安装 114 RAC BLOG_Oracle_lhr_RAC 12cR1安装 115 RAC centos7.7部署oracle12.2.0.1rac 116 RAC deploying_oracle_rac_12c_rhel7_v1.1_0 117 RAC Guides_Rac11gR2OnLinux--(from redhat) 118 RAC Guides安装指南_Rac11gR1OnHPUX 119 RAC Guides安装指南_Rac11gR2OnAIX 120 RAC Guides安装指南_Rac11gR2OnLinux 121 RAC Guides安装指南_Rac11gR2OnSolaris 122 RAC Guides安装指南_Rac11gR2OnWindows 123 RAC Install_Oracel_RAC_12.2.0.1_on_Oracle_Linux_6.5 124 RAC Install_Oracel_RAC_12.2.0.1_on_Oracle_Linux_6.5 125 RAC Installation walk-through - Oracle Grid-RAC 11.2.0.4 on Oracle Linux 7 126 RAC install-Oracle-11gR2-RAC-on-HP-UX-11.31 127 RAC linux 7.2 Oracle 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值