FASTSYNC is a new LogXptMode for Data Guard in 12c. It enables Maximum Availability protection mode at larger distances with less performance impact than LogXptMode SYNC has had before. The old SYNC behavior looks like this:

LogXptMode=SYNC
The point is that we need to wait for two acknowledgements by RFS (got it & wrote it) before we can write the redo entry locally and get the transaction committed. This may slow down the speed of transactions on the Primary, especially with long distances. Now to the new feature:

LogXptMode=FASTSYNC
Here, we wait only for the first acknowledgement (got it) by RFS before we can write locally. There is still a possible performance impact with large distances here, but it is less than before. This is how it looks implemented:
DGMGRL> show configuration; Configuration - myconf Protection Mode: MaxAvailability Members: prima - Primary database physt - (*) Physical standby database Fast-Start Failover: ENABLED Configuration Status: SUCCESS (status updated 26 seconds ago) DGMGRL> show database physt logxptmode LogXptMode = 'fastsync' DGMGRL> exit [oracle@uhesse ~]$ sqlplus sys/oracle@prima as sysdba SQL*Plus: Release 12.1.0.2.0 Production on Sat Aug 1 10:41:27 2015 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL> show parameter log_archive_dest_2 NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest_2 string service="physt", SYNC NOAFFIRM delay=0 optional compression= disable max_failure=0 max_conn ections=1 reopen=300 db_unique _name="physt" net_timeout=30, valid_for=(online_logfile,all_ roles)
My configuration uses Fast-Start Failover, just to show that this is no restriction. Possible but not required is the usage of FASTSYNC together with Far Sync Instances. You can’t have Maximum Protection with FASTSYNC, though:
DGMGRL> disable fast_start failover;
Disabled.
DGMGRL> edit configuration set protection mode as maxprotection;
Error: ORA-16627: operation disallowed since no standby databases would remain to support protection mode
Failed.
DGMGRL> edit database physt set property logxptmode=sync;
Property "logxptmode" updated
DGMGRL> edit configuration set protection mode as maxprotection;
Succeeded.
Addendum: As my dear colleague Joel Goodman pointed out, the name of the process that does the Redo Transport from Primary to Standby has changed from LNS to NSS (for synchronous Redo Transport):
SQL> select name,description from v$bgprocess where paddr<>'00';
NAME DESCRIPTION
----- ----------------------------------------------------------------
PMON process cleanup
VKTM Virtual Keeper of TiMe process
GEN0 generic0
DIAG diagnosibility process
DBRM DataBase Resource Manager
VKRM Virtual sKeduler for Resource Manager
PSP0 process spawner 0
DIA0 diagnosibility process 0
MMAN Memory Manager
DBW0 db writer process 0
MRP0 Managed Standby Recovery
TMON Transport Monitor
ARC0 Archival Process 0
ARC1 Archival Process 1
ARC2 Archival Process 2
ARC3 Archival Process 3
ARC4 Archival Process 4
NSS2 Redo transport NSS2
LGWR Redo etc.
CKPT checkpoint
RVWR Recovery Writer
SMON System Monitor Process
SMCO Space Manager Process
RECO distributed recovery
LREG Listener Registration
CJQ0 Job Queue Coordinator
PXMN PX Monitor
AQPC AQ Process Coord
DMON DG Broker Monitor Process
RSM0 Data Guard Broker Resource Guard Process 0
NSV1 Data Guard Broker NetSlave Process 1
INSV Data Guard Broker INstance SlaVe Process
FSFP Data Guard Broker FSFO Pinger
MMON Manageability Monitor Process
MMNL Manageability Monitor Process 2
35 rows selected.
I’m not quite sure, but I think that was even in 11gR2 already the case. Just kept the old name in sketches as a habit 🙂
#1 von Noons am August 1, 2015 - 15:53
Still don’t get why max avail has to shutdown the primary if the standby write fails.
Shutting down an application’s db because a standby write failed?
That is not max avail in any language…
#2 von Uwe Hesse am August 1, 2015 - 16:06
And who says that with maximum availability the primary needs to shutdown if the standby fails? For sure I didn’t. Because it’s false. The behavior you describe occurs with maximum protection when only one standby is configured. Which is why two (or more) standby databases are recommended with maximum protection. With maximum availability and just one standby, the primary changes to ASYNC Redo Transport if the one standby doesn’t respond. It does NOT shutdown then – therefore the name of the protection mode, by the way 🙂
#3 von Noons am August 2, 2015 - 01:42
Hmmm, something is wrong with my setup, then. Will investigate. Thanks for the heads-up.
#4 von Vishal Gupta am August 10, 2015 - 14:34
LNS change to NSA (Aysnc) or NSS (Sync) from 11.2.0.1 onwards
#5 von Robert Koltai am Oktober 11, 2016 - 09:44
Hi Uwe!
set lines 120
column destination format a25
column id format 999
column target format a7
column seq# format 9999
column proc format a4
select dest_id as id, status , target,
–archiver, destination, log_sequence as seq#, process as proc,
register, transmit_mode, affirm,
–valid_type, valid_role, db_unique_name,
applied_scn
from v$archive_dest where dest_id SQL> SQL> SQL> SQL> SQL> SQL> 2 3 4 5 6
ID STATUS TARGET REG TRANSMIT_MOD AFF APPLIED_SCN
—- ——— ——- — ———— — ———–
1 VALID PRIMARY YES SYNCHRONOUS NO 0
2 VALID STANDBY YES PARALLELSYNC YES 1854722
I have a 12.1.0.2 physical standby setup with the query above run on the primary.
Can you please shed light on what the difference between PARALLELSYNC and SYNCHRONOUS is. (v$archive_dest.transmit_mode)
The documentation https://docs.oracle.com/database/121/REFRN/GUID-B70F0435-96AE-4AB4-9329-F035188C413F.htm#REFRN30007 does not give any detail on this.
Any link, explanation, metalink note id is welcome.
Thanks,
Rob
#6 von fouedgray am Oktober 11, 2016 - 20:48
Thanks for this post.
#7 von Pria am November 6, 2017 - 16:04
I have FSFO configured between primary and standby. The setup runs in max availability mode. I tried changing logxptmode of physical standby to fastsync. However after changing the logxptmode I’m not able to enable fast_start failover. Is fastsync compatible with FSFO or do you need farsync to work with it?
#8 von Uwe Hesse am November 8, 2017 - 17:07
Hi Pria,
I can do it with my configuration:
DGMGRL> edit database physt set property logxptmode=fastsync;
Property „logxptmode“ updated
DGMGRL> edit configuration set protection mode as maxavailability;
Succeeded.
DGMGRL> enable fast_start failover;
Enabled.
I’m running 12.2.0.1 on Oracle Linux
Best regards
Uwe