Oracle advertises Far Sync as a solution for “Zero Data Loss at any distance”. This is because the primary sends its redo stream synchronously to the Far Sync, which relays it to the remote physical standby.
There are many reasons why Far Sync is an optimal solution for this use case, but that’s not the topic of this post 🙂
Some customers ask: Can I configure Far Sync to receive the redo stream asynchronously?
Although a direct standby receiving asynchronously would be a better idea, Far Sync can receive asynchronously as well.
And one reason might be to send asynchronously to one Far Sync member that redistributes locally to many standbys.
It is very simple to achieve: just changing the RedoRoutes property on the primary.
RedoRoutes = '(LOCAL : cdgsima_farsync1 ASYNC)'
This will work seamlessly. The v$dataguard_process will show the async transport process:
NAME PID TYP ACTION CLIENT_PID CLIENT_ROLE GROUP# RESETLOG_ID THREAD# SEQUENCE# BLOCK#
TT02 440 KSV async ORL multi 0 none 2 1098480879 1 146 456
What about Fast-Start Failover?
Up to and including 19c, ASYNC transport to Far Sync will not work with Fast-Start Failover (FSFO).
ASYNC redo transport mandates Maximum Performance protection mode, and FSFO supports that in conjunction with Far Sync only starting with 21c.
Before 21c, trying to enable FSFO with a Far Sync will fail with:
effective redo transport mode is incompatible with the configuration protection mode
DGMGRL> show fast_start failover
Fast-Start Failover: Disabled
Protection Mode: MaxPerformance
Lag Limit: 30 seconds
Threshold: 30 seconds
Active Target: (none)
Potential Targets: "cdgsima_lhr1bm"
cdgsima_lhr1bm invalid - effective redo transport mode is incompatible with the configuration protection mode
Shutdown Primary: TRUE
Observer Reconnect: (none)
Observer Override: FALSE
Configurable Failover Conditions
Corrupted Controlfile YES
Corrupted Dictionary YES
Inaccessible Logfile NO
Stuck Archiver NO
Datafile Write Errors YES
Oracle Error Conditions:
So if you want FSFO with Far Sync in 19c, it has to be MaxAvailability (and SYNC redo transport to the FarSync).
If you don’t need FSFO, as we have seen, there is no problem. The only protection mode that will not work with Far Sync is Maximum Protection:
If FSFO is required, and you want Maximum Performance before 21c, or Maximum Protection, you have to remove Far Sync from the redo route.