概述
================
Active Data Guard Far Sync是Oracle 12c的新功能(也称为Far Sync Standby),Far Sync功能的实现是通过在距离主库(Primary Database)相对较近的地点配置Far Sync实例,主库(Primary Database) 同步(synchronous)传输redo到Far Sync实例,然后Far Sync实例再将redo异步(asynchronous)传输到终端备库(Standby Database)。这样既可以保证零数据丢失又可以降低主库压力。Far Sync实例只有密码文件,init参数文件和控制文件,而没有数据文件。
如果redo 传输采用Maximum Availability模式,我们可以在距离生产中心(Primary Database)相对较近的地点配置Far Sync实例,主库(Primary Database)同步(synchronous)传输redo到Far Sync实例,保证零数据丢失(zero data loss),同时主库和Far Sync距离较近,网络延时很小,因此对主库性能影响很小。然后Far Sync实例再将redo异步(asynchronous)发送到终端备库(Standby Database)。
如果redo 传输采用Maximum Performance模式,我们可以在距离生产中心(Primary Database)相对较近的地点配置Far Sync实例,主库(Primary Database) 异步传输redo到Far Sync实例,然后Far Sync实例再负责传输redo到其他多个终端备库(Standby Database)。这样可以减少主库向多个终端备库(Standby Database)传输redo的压力(offload)。
Far Sync配置对于Data Guard 角色转换(role transitions)是透明的,即switchover/failover命令方式与12c之前相同。
考虑到可能发生Data Guard 角色转换,即switchover/failover,可以在距离备库较近的地方也配置Far Sync实例,这个Far Sync实例只有在当前的备库切换为主库后才启用。
考虑到Far Sync实例的单点故障,可以在距离主库交近的地点配置2个Far Sync实例,起到备用的作用。
本文重点是测试Far Sync安装配置。
Far Sync示意图
================
创建配置Far Sync
================
2. 创建配置Far Sync实例,Far Sync实例只有密码文件,init参数文件和控制文件,而没有数据文件。
创建Far Sync实例的控制文件,在主库执行:
SQL> ALTER DATABASE CREATE FAR SYNC INSTANCE CONTROLFILE AS '/tmp/controlfs01.ctl';
3. 设置主库redo同步传输到Far Sync实例,修改主库LOG_ARCHIVE_DEST_2参数:
LOG_ARCHIVE_DEST_2='SERVICE=dg12cfs SYNC AFFIRM MAX_FAILURE=1 ALTERNATE=LOG_ARCHIVE_DEST_3
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dg12cfs'
4. 设置Far Sync实例异步传输redo到备库,修改Far Sync实例LOG_ARCHIVE_DEST_2参数:
LOG_ARCHIVE_DEST_2='SERVICE=dg12cs ASYNC
VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=dg12cs'
5. 为了解决Far Sync实例的单点故障,可以在距离主库较近的地点配置2个Far Sync实例。
6. 创建完成后确认:
SQL> select * from V$DATAGUARD_CONFIG;
DB_UNIQUE_NAME PARENT_DBUN DEST_ROLE CURRENT_SCN CON_ID
------------------------------ ------------------------------ ----------------- ----------- ----------
dg12cfs dg12cp FAR SYNC INSTANCE 682995 0
dg12cs dg12cfs PHYSICAL STANDBY 682995 0
dg12cp NONE PRIMARY DATABASE 683138 0