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: DISABLED
Configuration Status:
SUCCESS (status updated 29 seconds ago)
添加hosts文件
三个节点修改以下内容[root@oracle ~]# vi /etc/hosts
192.168.16.81 12cr2
192.168.16.130 oracle
192.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=0
newcdb.__db_cache_size=541065216
newcdb.__inmemory_ext_roarea=0
newcdb.__inmemory_ext_rwarea=0
newcdb.__java_pool_size=4194304
newcdb.__large_pool_size=8388608
newcdb.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
newcdb.__pga_aggregate_target=264241152
newcdb.__sga_target=838860800
newcdb.__shared_io_pool_size=33554432
newcdb.__shared_pool_size=239075328
newcdb.__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 sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Sun Jul 2 22:26:22 2017
Copyright (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 bytes
Fixed Size 8798312 bytes
Variable Size 322965400 bytes
Database Buffers 503316480 bytes
Redo Buffers 3780608 bytes
SQL> show parameter db_unique_name
NAME 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 local
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string LISTENER_NEWCDB
parallel_force_local boolean FALSE
SQL> alter system set local_listener=frasync; ##frasync修改
System altered.
SQL> show parameter local
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string FRASYNC
parallel_force_local boolean FALSE
frasync启动data guard brokerSQL> show parameter dg_broker
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1 string /u01/app/oracle/product/12.2.0
/db_1/dbs/dr1newcdb.dat
dg_broker_config_file2 string /u01/app/oracle/product/12.2.0
/db_1/dbs/dr2newcdb.dat
dg_broker_start boolean FALSE
SQL> !ps -ef |grep dmon
oracle 2309 2305 0 22:34 pts/0 00:00:00 /bin/bash -c ps -ef |grep dmon
oracle 2311 2309 0 22:34 pts/0 00:00:00 grep dmon
SQL> alter system set dg_broker_start=true;
System altered.
SQL> !ps -ef |grep dmon
oracle 2314 1 0 22:34 ? 00:00:00 ora_dmon_newcdb
oracle 2316 2305 0 22:35 pts/0 00:00:00 /bin/bash -c ps -ef |grep dmon
oracle 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 2017
Copyright (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-17
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=36 device type=DISK
channel ORA_DISK_1: copied control file copy
output file name=/u01/app/oracle/oradata/newcdb/control01.ctl
output file name=/u01/app/oracle/oradata/newcdb/control02.ctl
Finished restore at 02-JUL-17
fra sync节点启动到mount[oracle@frasync ~]$ sqlplus / as sysdba
SQL> alter database mount;
DGbroker添加far_sync节点
DGMGRL> add far_sync frasync as connect identifier is frasync;
far sync instance "frasync" added
DGMGRL> SHOW CONFIGURATION;
Configuration - dg_newcdb
Protection Mode: MaxPerformance
Members:
newcdb - Primary database
newcdbdg - Physical standby database
frasync - Far sync instance (disabled)
Fast-Start Failover: DISABLED
Configuration 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: DISABLED
Configuration 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 sysdba
SQL> alter system switch logfile;
##fra sync节点2017-07-02T23:00:06.996529+08:00
Archived Log entry 3 added for T-1.S-87 ID 0x22fd0e8 LAD:1
2017-07-02T23:00:06.996698+08:00
RFS[1]: Selected log 5 for T-1.S-88 dbid 36700136 branch 947543403
##standby备机2017-07-02T23:00:07.920455+08:00
RFS[5]: Selected log 4 for T-1.S-88 dbid 36700136 branch 947543403
2017-07-02T23:00:07.989933+08:00
Archived Log entry 15 added for T-1.S-87 ID 0x22fd0e8 LAD:1
2017-07-02T23:00:08.048623+08:00
Media Recovery Waiting for thread 1 sequence 88 (in transit)
2017-07-02T23:00:08.048938+08:00
Recovery 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]$ ll
total 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