FASTSYNC is a new DataGuard capability available with Oracle Database 12c. The FASTSYNC configures redo transport services for this configuration member using the SYNCand NOAFFIRM attributes of the LOG_ARCHIVE_DEST_n initialization parameter. The attribute NOAFFIRM specifies that the standby acknowledge receipt of redo without waiting for the write to the standby redo log file to complete. This mode is only available in maximum availability protection mode.
Remark:
FASTSYNC transport mode uses the NOAFFIRM attribute of the LOG_ARCHIVE_DEST_n parameter, data loss is possible.
The following attributes of LOG_ARCHIVE_DEST_N initialization parameter define the redo transport mode that is used by primary database to send redo to the standby database:
- SYNC
Specifies that redo data generated by a transaction must have received at a destination that has this attribute before the transaction can commit. In the configuration with multiple SYNC destinations, the redo must be processes as described here for every SYNC destination. - ASYNC (default)
Specifies that redo data generated by a transaction need not have been received at a destination that has this attribute before the transaction can commit. - AFFIRM Specifies that redo transport destination acknowledge received redo data after writing it to the standby redo log.
- NOAFFIRM Specifies that a redo transport destination acknowledge received redo data before writing it to the standby redo log
If neither the AFFIRM or NOAFFIRM attribute is specified, the default is AFFIRM.
- When the SYNC attribute is specified and the NOAFFIRM
- When the ASYNC attribute is specified.
Configuration Zero Data Loss
A Zero data loss protection requires synchronous communication between a production database (primary) and the remote database (standby) used for data protection and availability. The DataGuard favorite configuration for zero data loss is Maximum Availability protection mode with synchronous redo transport (SYNC). WithFAR SYNC instances and the usages of the FASTSYNC attribute for the redo data stream we can setup a Oracle (Active) Data Guard Far Sync Zero Data Loss at Any Distance
Configures redo transport services to use FASTSYNC
DGMGRL
[oracle@oel7 Desktop]$ dgmgrl sysdg@oel7/cdb1_CFG
DGMGRL for Linux: Release 12.2.0.1.0 - Production on Fri Sep 8 02:14:20 2017
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL, type "help" for information.
Password:
Connected to "cdb2"
Connected as SYSDG.
DGMGRL> show configuration
Configuration - DRSolution
Protection Mode: MaxAvailability
Members:
cdb1 - Primary database
cdb1fs - Far sync instance
cdb2 - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS (status updated 25 seconds ago)
DGMGRL> show database verbose cdb1 RedoRoutes
RedoRoutes = '(cdb1:cdb1fs sync)'
DGMGRL> show far_sync verbose cdb1fs RedoRoutes
RedoRoutes = '(cdb1:cdb2 async)'
DGMGRL> show database verbose cdb2 RedoRoutes
RedoRoutes = '(cdb2:cdb1 sync)'
DGMGRL> show database verbose cdb1 LogXptMode
LogXptMode = 'SYNC'
DGMGRL> show far_sync verbose cdb1fs LogXptMode
LogXptMode = 'ASYNC'
DGMGRL> show database verbose cdb2 LogXptMode
LogXptMode = 'SYNC'
SQL> show parameter log_archive_dest_2
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2 string service="cdb1fs", SYNC AFFIRM
delay=0 optional compression=d
isable max_failure=0 max_conne
ctions=1 reopen=300 db_unique_
name="cdb1fs" net_timeout=30,
valid_for=(online_logfile,all_
roles)
Configure FASTSYNC
DGMGRL> edit database cdb1 set property 'redoroutes'='(cdb1:cdb1fs fastsync)';
DGMGRL> show database verbose cdb1 RedoRoutes
RedoRoutes = '(cdb1:cdb1fs fastsync)'
DGMGRL> show database verbose cdb1 LogXptMode
LogXptMode = 'SYNC'
Alertlog
==> /home/oracle/app/diag/rdbms/cdb1/cdb1/trace/alert_cdb1.log <==
Using STANDBY_ARCHIVE_DEST parameter default value as USE_DB_RECOVERY_FILE_DEST
ALTER SYSTEM SET log_archive_dest_2='service="cdb1fs"','SYNC NOAFFIRM delay=0 optional compression=disable max_failure=0 max_connections=1 reopen=300 db_unique_name="cdb1fs" net_timeout=30','valid_for=(online_logfile,all_roles)' SCOPE=BOTH;
ALTER SYSTEM SWITCH ALL LOGFILE start (cdb1)
Settings LOG_ARCHIVE_DEST_n
Before change => log_archive_dest_2 setting
SQL> show parameter log_archive_dest_2
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2 string service="cdb1fs", SYNC AFFIRM
delay=0 optional compression
=disable max_failure=0 max_con
nections=1 reopen=300 db_uniqu
e_name="cdb1fs" net_timeout=30
, valid_for=(online_logfile,al
l_roles)
After change => log_archive_dest_2 setting
SQL> show parameter log_archive_dest_2
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2 string service="cdb1fs", SYNC NOAFFIRM
delay=0 optional compression
=disable max_failure=0 max_con
nections=1 reopen=300 db_uniqu
e_name="cdb1fs" net_timeout=30
, valid_for=(online_logfile,al
l_roles)