{"id":2096,"date":"2022-04-14T09:40:52","date_gmt":"2022-04-14T07:40:52","guid":{"rendered":"http:\/\/www.ludovicocaldara.net\/dba\/?p=2096"},"modified":"2022-04-14T09:43:28","modified_gmt":"2022-04-14T07:43:28","slug":"farsync-and-fsfo","status":"publish","type":"post","link":"https:\/\/www.ludovicocaldara.net\/dba\/farsync-and-fsfo\/","title":{"rendered":"Far Sync and Fast-Start Failover Protection modes"},"content":{"rendered":"<p>Oracle advertises Far Sync as a solution for &#8220;Zero Data Loss at any distance&#8221;. This is because the primary sends its redo stream synchronously to the Far Sync, which relays it to the remote physical standby.<\/p>\n<p><a href=\"https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-normal.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2098\" src=\"https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-normal.png\" alt=\"\" width=\"544\" height=\"460\" srcset=\"https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-normal.png 544w, https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-normal-300x254.png 300w, https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-normal-355x300.png 355w\" sizes=\"auto, (max-width: 544px) 100vw, 544px\" \/><\/a>There are many reasons why Far Sync is an optimal solution for this use case, but that&#8217;s not the topic of this post \ud83d\ude42<\/p>\n<p>Some customers ask: <strong>Can I configure Far Sync to receive the redo stream asynchronously<\/strong>?<\/p>\n<p>Although a direct standby receiving asynchronously would be a better idea, Far Sync can receive asynchronously as well.<\/p>\n<p>And one reason might be to send asynchronously to one Far Sync member that redistributes locally to many standbys.<\/p>\n<p><a href=\"https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-async.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2097\" src=\"https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-async.png\" alt=\"\" width=\"562\" height=\"318\" srcset=\"https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-async.png 562w, https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-async-300x170.png 300w, https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-async-500x283.png 500w\" sizes=\"auto, (max-width: 562px) 100vw, 562px\" \/><\/a>It is very simple to achieve: just changing the RedoRoutes property on the primary.<\/p>\n<pre class=\"lang:plsql decode:true\">RedoRoutes = '(LOCAL : cdgsima_farsync1 ASYNC)'<\/pre>\n<p>This will work seamlessly. The v$dataguard_process will show the async transport process:<\/p>\n<pre class=\"lang:plsql highlight:0 decode:true\">NAME PID TYP ACTION CLIENT_PID CLIENT_ROLE GROUP# RESETLOG_ID THREAD# SEQUENCE# BLOCK#\r\nTT02 440 KSV async ORL multi 0 none 2 1098480879 1 146 456<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>What about Fast-Start Failover?<\/strong><\/p>\n<p>Up to and including 19c, ASYNC transport to Far Sync will not work with Fast-Start Failover (FSFO).<\/p>\n<p>ASYNC redo transport mandates Maximum Performance protection mode, and FSFO supports that in conjunction with Far Sync only starting with 21c.<\/p>\n<p><a href=\"https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-and-fsfo-table.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-2101\" src=\"https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-and-fsfo-table-1024x131.png\" alt=\"\" width=\"584\" height=\"75\" srcset=\"https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-and-fsfo-table-1024x131.png 1024w, https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-and-fsfo-table-300x38.png 300w, https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-and-fsfo-table-768x98.png 768w, https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-and-fsfo-table-500x64.png 500w, https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-and-fsfo-table.png 1112w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/a><\/p>\n<p>Before 21c, trying to enable FSFO with a Far Sync will fail with:<\/p>\n<pre class=\"lang:plsql decode:true \">effective redo transport mode is incompatible with the configuration protection mode<\/pre>\n<pre class=\"lang:plsql decode:true\">DGMGRL&gt; show fast_start failover\r\n\r\nFast-Start Failover:  Disabled\r\n\r\n  Protection Mode:    MaxPerformance\r\n  Lag Limit:          30 seconds\r\n\r\n  Threshold:          30 seconds\r\n  Active Target:      (none)\r\n  Potential Targets:  \"cdgsima_lhr1bm\"\r\n    cdgsima_lhr1bm invalid - effective redo transport mode is incompatible with the configuration protection mode\r\n  Observer:           (none)\r\n  Shutdown Primary:   TRUE\r\n  Auto-reinstate:     TRUE\r\n  Observer Reconnect: (none)\r\n  Observer Override:  FALSE\r\n\r\nConfigurable Failover Conditions\r\n  Health Conditions:\r\n    Corrupted Controlfile          YES\r\n    Corrupted Dictionary           YES\r\n    Inaccessible Logfile            NO\r\n    Stuck Archiver                  NO\r\n    Datafile Write Errors          YES\r\n\r\n  Oracle Error Conditions:\r\n    (none)\r\n<\/pre>\n<p>So if you want FSFO with Far Sync in 19c, it has to be MaxAvailability (and SYNC redo transport to the FarSync).<\/p>\n<p><a href=\"https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-and-fsfo-table.png\"><br \/>\n<\/a><strong>If you don&#8217;t need FSFO<\/strong>, as we have seen, there is no problem. The only protection mode that will not work with Far Sync is Maximum Protection:<\/p>\n<p><a href=\"https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-no-fsfo-table.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-2102\" src=\"https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-no-fsfo-table-1024x129.png\" alt=\"\" width=\"584\" height=\"74\" srcset=\"https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-no-fsfo-table-1024x129.png 1024w, https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-no-fsfo-table-300x38.png 300w, https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-no-fsfo-table-768x97.png 768w, https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-no-fsfo-table-500x63.png 500w, https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/far-sync-no-fsfo-table.png 1112w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/a><strong>If FSFO is required<\/strong>, and you want<strong> Maximum Performance before 21c, or Maximum Protection<\/strong>, you have to <strong>remove Far Syn<\/strong>c from the redo route.<\/p>\n<p><a href=\"https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/no-far-sync-fsfo-table.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-2103\" src=\"https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/no-far-sync-fsfo-table-1024x132.png\" alt=\"\" width=\"584\" height=\"75\" srcset=\"https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/no-far-sync-fsfo-table-1024x132.png 1024w, https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/no-far-sync-fsfo-table-300x39.png 300w, https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/no-far-sync-fsfo-table-768x99.png 768w, https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/no-far-sync-fsfo-table-500x64.png 500w, https:\/\/www.ludovicocaldara.net\/dba\/wp-content\/uploads\/2022\/04\/no-far-sync-fsfo-table.png 1113w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/a><\/p>\n<p>&#8212;<\/p>\n<p>Ludovico<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Oracle advertises Far Sync as a solution for &#8220;Zero Data Loss at any distance&#8221;. 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 &hellip; <a href=\"https:\/\/www.ludovicocaldara.net\/dba\/farsync-and-fsfo\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[329,3],"tags":[202,355,351,354,353],"class_list":["post-2096","post","type-post","status-publish","format-standard","hentry","category-oracle-dg","category-oracledb","tag-active-data-guard","tag-async","tag-far-sync","tag-fast-start-failover","tag-fsfo"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.ludovicocaldara.net\/dba\/wp-json\/wp\/v2\/posts\/2096","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ludovicocaldara.net\/dba\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ludovicocaldara.net\/dba\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ludovicocaldara.net\/dba\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ludovicocaldara.net\/dba\/wp-json\/wp\/v2\/comments?post=2096"}],"version-history":[{"count":4,"href":"https:\/\/www.ludovicocaldara.net\/dba\/wp-json\/wp\/v2\/posts\/2096\/revisions"}],"predecessor-version":[{"id":2105,"href":"https:\/\/www.ludovicocaldara.net\/dba\/wp-json\/wp\/v2\/posts\/2096\/revisions\/2105"}],"wp:attachment":[{"href":"https:\/\/www.ludovicocaldara.net\/dba\/wp-json\/wp\/v2\/media?parent=2096"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ludovicocaldara.net\/dba\/wp-json\/wp\/v2\/categories?post=2096"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ludovicocaldara.net\/dba\/wp-json\/wp\/v2\/tags?post=2096"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}