实验DG Far Sync的搭建过程

来源:互联网 发布:维多利亚的秘密 知乎 编辑:程序博客网 时间:2024/05/17 06:55


Far Sync跨数据中心远程同步数据,减少网络延迟

主库与Far Sync节点redo同步传输,Far Sync节点与standby节点redo异步传输,standby节点是一个级联备库。


实验环境

 

主端

备端

Far Sync

主机名

12cr2

oracle

farsync

IP地址

192.168.16.81

192.168.16.130

192.168.16.131

db_unique_name

newcdb

newcdbdg

frasync


已经存在同步正常的物理备机standby newcdbdg,添加Far Sync节点

DGMGRL> SHOW CONFIGURATION;Configuration - dg_newcdb  Protection Mode: MaxPerformance  Members:  newcdb   - Primary database    newcdbdg - Physical standby database Fast-Start Failover: DISABLEDConfiguration Status:SUCCESS   (status updated 29 seconds ago)

添加hosts文件

三个节点修改以下内容
[root@oracle ~]# vi /etc/hosts192.168.16.81   12cr2192.168.16.130  oracle192.168.16.131  frasync

配置静态监听

Far Sync节点配置listener.ora文件,添加newcdb的静态监听条目
[oracle@frasync admin]$ cat listener.ora # listener.ora Network Configuration File: /u01/app/oracle/product/12.2.0/db_1/network/admin/listener.ora# Generated by Oracle configuration tools.SID_LIST_LISTENER =  (SID_LIST =    (SID_DESC =      (GLOBAL_DBNAME = newcdb)      (ORACLE_HOME = /u01/app/oracle/product/12.2.0/db_1)      (SID_NAME = newcdb)    )   )LISTENER =  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.131)(PORT = 1521))  )ADR_BASE_LISTENER = /u01/app/oracle
三个节点配置tnsnames.ora文件,主端和备端standby添加far sync的监听连接串, far sync添加主端和备端standby的监听连接串
[oracle@frasync admin]$ cat tnsnames.ora # tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.2.0/db_1/network/admin/tnsnames.ora# Generated by Oracle configuration tools.LISTENER_NEWCDB =  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.81)(PORT = 1521))newcdb =  (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.81)(PORT = 1521))    )    (CONNECT_DATA =      (SERVICE_NAME = newcdb)    )  )newcdbdg =  (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.130)(PORT = 1521))    )    (CONNECT_DATA =      (SERVICE_NAME = newcdb)    )  )frasync =  (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.131)(PORT = 1521))    )    (CONNECT_DATA =      (SERVICE_NAME = newcdb)    )  )
启动far sync节点的监听
[oracle@frasync admin]$ lsnrctl start

tnsping测试网络连通性

备端tnsping主端和frasync
[oracle@oracle ~]$ tnsping newcdb[oracle@oracle ~]$ tnsping frasync
主端tnsping备端和frasync
[oracle@12cr2 ~]$ tnsping newcdbdg[oracle@12cr2 ~]$ tnsping frasync
frasync tnsping主端和备端
[oracle@frasync ~]$ tnsping newcdb[oracle@frasync ~]$ tnsping newcdbdg

主端创建pfile文件并将pfile和密码文件传输到frasync

SQL> create pfile='/home/oracle/pfile.ora' from spfile;[oracle@12cr2 ~]$ scp pfile.ora 192.168.16.131:/home/oracle/[oracle@12cr2 dbs]$ scp orapwnewcdb 192.168.16.131:`pwd`

frasync修改主端传输的pfile文件

添加db_unique_name,要不同于主库和备库
[oracle@frasync ~]$ cat pfile.ora newcdb.__data_transfer_cache_size=0newcdb.__db_cache_size=541065216newcdb.__inmemory_ext_roarea=0newcdb.__inmemory_ext_rwarea=0newcdb.__java_pool_size=4194304newcdb.__large_pool_size=8388608newcdb.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environmentnewcdb.__pga_aggregate_target=264241152newcdb.__sga_target=838860800newcdb.__shared_io_pool_size=33554432newcdb.__shared_pool_size=239075328newcdb.__streams_pool_size=0*.audit_file_dest='/u01/app/oracle/admin/newcdb/adump'*.audit_trail='db'*.compatible='12.2.0'*.control_files='/u01/app/oracle/oradata/newcdb/control01.ctl','/u01/app/oracle/oradata/newcdb/control02.ctl'*.db_block_size=8192*.db_name='newcdb'*.diagnostic_dest='/u01/app/oracle'*.dispatchers='(PROTOCOL=TCP) (SERVICE=newcdbXDB)'*.enable_pluggable_database=true*.local_listener='LISTENER_NEWCDB'*.log_archive_dest_1='LOCATION=/archive'*.log_archive_format='%t_%s_%r.dbf'*.nls_language='AMERICAN'*.nls_territory='AMERICA'*.open_cursors=300*.pga_aggregate_target=250m*.processes=300*.remote_login_passwordfile='EXCLUSIVE'*.sga_target=800m*.undo_tablespace='UNDOTBS1'*.db_unique_name='frasync'*.LOG_FILE_NAME_CONVERT=('/u01/app/oracle/oradata/newcdb','/u01/app/oracle/oradata/newcdb')

frasync创建参数文件所需目录

[root@frasync ~]# mkdir /archive[root@frasync ~]# chown oracle:oinstall /archive/[oracle@frasync ~]$ mkdir -p /u01/app/oracle/admin/newcdb/adump[oracle@frasync ~]$ mkdir -p /u01/app/oracle/oradata/newcdb

启动备库到nomount状态

[oracle@frasync ~]$ export ORACLE_SID=newcdb[oracle@frasync ~]$ sqlplus / as sysdbaSQL*Plus: Release 12.2.0.1.0 Production on Sun Jul 2 22:26:22 2017Copyright (c) 1982, 2016, Oracle.  All rights reserved.Connected to an idle instance.SQL> create spfile from pfile='/home/oracle/pfile.ora';File created.SQL> startup nomount;ORACLE instance started.Total System Global Area  838860800 bytesFixed Size                  8798312 bytesVariable Size             322965400 bytesDatabase Buffers          503316480 bytesRedo Buffers                3780608 bytesSQL> show parameter db_unique_nameNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------db_unique_name                       string      frasync

测试主备库之间的连通性

[oracle@oracle ~]$ sqlplus sys/oracle@newcdbdg as sysdba[oracle@oracle ~]$ sqlplus sys/oracle@newcdb as sysdba[oracle@oracle ~]$ sqlplus sys/oracle@frasync as sysdba[oracle@12cr2 dbs]$ sqlplus sys/oracle@newcdbdg as sysdba[oracle@12cr2 dbs]$ sqlplus sys/oracle@newcdb as sysdba[oracle@12cr2 ~]$ sqlplus sys/oracle@frasync as sysdba[oracle@frasync ~]$ sqlplus sys/oracle@newcdb as sysdba[oracle@frasync ~]$ sqlplus sys/oracle@newcdbdg as sysdba[oracle@frasync ~]$ sqlplus sys/oracle@frasync as sysdba

frasync启动dataguard broker

如果使用data guard broker,需要先修改frasync的local_listener参数:
SQL> show parameter localNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------local_listener                       string      LISTENER_NEWCDBparallel_force_local                 boolean     FALSESQL> alter system set local_listener=frasync;      ##frasync修改System altered.SQL> show parameter localNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------local_listener                       string      FRASYNCparallel_force_local                 boolean     FALSE
frasync启动data guard broker
SQL> show parameter dg_brokerNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------dg_broker_config_file1               string      /u01/app/oracle/product/12.2.0                                                 /db_1/dbs/dr1newcdb.datdg_broker_config_file2               string      /u01/app/oracle/product/12.2.0                                                 /db_1/dbs/dr2newcdb.datdg_broker_start                      boolean     FALSESQL> !ps -ef |grep dmonoracle    2309  2305  0 22:34 pts/0    00:00:00 /bin/bash -c ps -ef |grep dmonoracle    2311  2309  0 22:34 pts/0    00:00:00 grep dmonSQL> alter system set dg_broker_start=true;System altered.SQL> !ps -ef |grep dmonoracle    2314     1  0 22:34 ?        00:00:00 ora_dmon_newcdboracle    2316  2305  0 22:35 pts/0    00:00:00 /bin/bash -c ps -ef |grep dmonoracle    2318  2316  0 22:35 pts/0    00:00:00 grep dmon

主库备份控制文件,fra sync节点还原

DGMGRL> add far_sync frasync as connect identifier is frasync;Error: ORA-16525: The Oracle Data Guard broker is not yet available.Failed.
报错,原因是需要fra sync节点还原控制文件,启动到mount状态
主库备份控制文件传输到fra sync节点上
SQL> ALTER DATABASE CREATE FAR SYNC INSTANCE CONTROLFILE AS '/home/oracle/controlfs01.ctl1';Database altered.[oracle@12cr2 ~]$ scp controlfs01.ctl1 192.168.16.131:/home/oracle/
fra sync节点还原控制文件
[oracle@frasync ~]$ rman target /Recovery Manager: Release 12.2.0.1.0 - Production on Sun Jul 2 22:44:52 2017Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.connected to target database: NEWCDB (not mounted)RMAN> restore controlfile from '/home/oracle/controlfs01.ctl1';Starting restore at 02-JUL-17using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: SID=36 device type=DISKchannel ORA_DISK_1: copied control file copyoutput file name=/u01/app/oracle/oradata/newcdb/control01.ctloutput file name=/u01/app/oracle/oradata/newcdb/control02.ctlFinished restore at 02-JUL-17
fra sync节点启动到mount
[oracle@frasync ~]$ sqlplus / as sysdbaSQL> alter database mount;

DGbroker添加far_sync节点

DGMGRL> add far_sync frasync as connect identifier is frasync;far sync instance "frasync" addedDGMGRL> SHOW CONFIGURATION;Configuration - dg_newcdb  Protection Mode: MaxPerformance  Members:  newcdb   - Primary database    newcdbdg - Physical standby database     frasync  - Far sync instance (disabled)Fast-Start Failover: DISABLEDConfiguration Status:SUCCESS   (status updated 33 seconds ago)

enablefar_sync节点

DGMGRL> ENABLE FAR_SYNC frasync;Enabled.DGMGRL> SHOW CONFIGURATION;Configuration - dg_newcdb  Protection Mode: MaxPerformance  Members:  newcdb   - Primary database    newcdbdg - Physical standby database     frasync  - Far sync instance Fast-Start Failover: DISABLEDConfiguration Status:SUCCESS   (status updated 1 second ago)DGMGRL> SHOW FAR_SYNC VERBOSE frasync;Far Sync Instance - frasync  Transport Lag:      (unknown)  Instance(s):    newcdb  Properties:    DGConnectIdentifier             = 'frasync'    LogXptMode                      = 'ASYNC'    RedoRoutes                      = ''    Binding                         = 'optional'    MaxFailure                      = '0'    MaxConnections                  = '1'    ReopenSecs                      = '300'    NetTimeout                      = '30'    RedoCompression                 = 'DISABLE'    LogShipping                     = 'ON'    TransportLagThreshold           = '30'    TransportDisconnectedThreshold  = '30'    LogArchiveMaxProcesses          = '4'    LogArchiveMinSucceedDest        = '1'    LogFileNameConvert              = '/u01/app/oracle/oradata/newcdb, /u01/app/oracle/oradata/newcdb'    InconsistentProperties          = '(monitor)'    InconsistentLogXptProps         = '(monitor)'    LogXptStatus                    = '(monitor)'    StandbyArchiveLocation          = '/archive'    AlternateLocation               = ''    LogArchiveTrace                 = '0'    LogArchiveFormat                = '%t_%s_%r.dbf'    TopWaitEvents                   = '(monitor)'Far Sync Instance Status:SUCCESS

主端切换归档,查看fra sync节点和备机接收状态
##主端切换归档
[oracle@12cr2 ~]$ sqlplus / as sysdbaSQL> alter system switch logfile;
##fra sync节点
2017-07-02T23:00:06.996529+08:00Archived Log entry 3 added for T-1.S-87 ID 0x22fd0e8 LAD:12017-07-02T23:00:06.996698+08:00RFS[1]: Selected log 5 for T-1.S-88 dbid 36700136 branch 947543403
##standby备机
2017-07-02T23:00:07.920455+08:00RFS[5]: Selected log 4 for T-1.S-88 dbid 36700136 branch 9475434032017-07-02T23:00:07.989933+08:00Archived Log entry 15 added for T-1.S-87 ID 0x22fd0e8 LAD:12017-07-02T23:00:08.048623+08:00Media Recovery Waiting for thread 1 sequence 88 (in transit)2017-07-02T23:00:08.048938+08:00Recovery of Online Redo Log: Thread 1 Group 4 Seq 88 Reading mem 0  Mem# 0: /u01/app/oracle/oradata/newcdb/stdbyredo01.log

fra sync节点没有数据文件
[oracle@frasync ~]$ cd /u01/app/oracle/oradata/newcdb[oracle@frasync newcdb]$ lltotal 856244-rw-r----- 1 oracle oinstall  18956288 Jul  2 23:02 control01.ctl-rw-r----- 1 oracle oinstall  18956288 Jul  2 23:02 control02.ctl-rw-r----- 1 oracle oinstall 209715712 Jul  2 23:00 stdbyredo01.log-rw-r----- 1 oracle oinstall 209715712 Jul  2 23:02 stdbyredo02.log-rw-r----- 1 oracle oinstall 209715712 Jul  2 22:51 stdbyredo03.log-rw-r----- 1 oracle oinstall 209715712 Jul  2 22:51 stdbyredo04.log