{"id":17148,"date":"2022-03-04T17:16:01","date_gmt":"2022-03-04T16:16:01","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/"},"modified":"2023-06-20T10:13:24","modified_gmt":"2023-06-20T08:13:24","slug":"oracle-21c-broker-fast-start-failover-callout-scripts-in-action","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/","title":{"rendered":"Oracle 21c Broker : Fast-Start Failover Callout Scripts in Action"},"content":{"rendered":"<p><strong>By Mouhamadou Diaw<\/strong><\/p>\n<p>With Oracle 21c (In fact Oracle 20c), we have a nice new feature with the broker which is the Fast-start Failover Callout Configuration scripts.<br \/>\nI talked about this feature in some presentations I did about the new features with Oracle 21c for the broker<br \/>\nThis feature will allow to automate tasks that must be performed before and after a fast-start failover operation.<\/p>\n<p>Yes this means that with Oracle 21c, we can configure some tasks to be executed before and after doing a fast_start failover. Sure that this feature will make life easier.<\/p>\n<p>The use of this feature is very simple<\/p>\n<p>We have to configure the DG_ADMIN variable which will be the default location of Client-side Broker Files. See my previous <a href=\"https:\/\/www.dbi-services.com\/blog\/oracle-20c-data-guard-standardization-of-client-side-broker-files\/\" target=\"_blank\" rel=\"noopener\"> blog <\/a><\/p>\n<p>The callout scripts should be located in the $DG_ADMIN\/config_ConfigurationSimpleName\/callout.<br \/>\nThe configuration file must be named fsfocallout.ora, and it&#8217;s mandatory.<br \/>\nThis fsfocallout.ora file will contain the names of the pre-callout configuration script and post-callout configuration script.<\/p>\n<p>The pre_callout script must create a .suc file and a .err file. Before doing a FSFO, then the observer will check for .suc file or a for a .err file. If a .suc file exists then the observer will initiate a FSFO.<\/p>\n<p>The .suc file and the .err file must be at the same location that the callout scripts.<\/p>\n<p>Below the configuration I am using<\/p>\n<p>oraadserver : 192.168.2.21 for the primary database<br \/>\noraadserver2 : 192.168.2.22 for the standby database<br \/>\noraadserver3 : 192.168.2.23 for the observer<\/p>\n<p>The FSFO is already configured<\/p>\n<div>\n<div id=\"highlighter_724123\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">DGMGRL&gt; show configuration<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql plain\">Configuration - db21<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">Protection Mode: MaxPerformance<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">Members:<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">DB21_SITE1 - <\/code><code class=\"sql keyword\">Primary<\/code> <code class=\"sql keyword\">database<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">DB21_SITE2 - (*) Physical standby <\/code><code class=\"sql keyword\">database<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"sql plain\">Fast-Start Failover: Enabled <\/code><code class=\"sql color1\">in<\/code> <code class=\"sql plain\">Potential Data Loss Mode<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"sql plain\">Configuration Status:<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"sql plain\">SUCCESS\u00a0\u00a0 (status updated 5 seconds ago)<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>And the observer is running<\/p>\n<div>\n<div id=\"highlighter_597568\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">DGMGRL&gt; show observer<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql plain\">Configuration - db21<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">Fast-Start Failover:\u00a0\u00a0\u00a0\u00a0 ENABLED<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql keyword\">Primary<\/code><code class=\"sql plain\">:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 DB21_SITE1<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">Active Target:\u00a0\u00a0\u00a0\u00a0\u00a0 DB21_SITE2<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"sql plain\">Observer <\/code><code class=\"sql string\">\"oraadserver3\"<\/code> <code class=\"sql plain\">- Master<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">Host <\/code><code class=\"sql keyword\">Name<\/code><code class=\"sql plain\">:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 oraadserver3<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql keyword\">Last<\/code> <code class=\"sql plain\">Ping <\/code><code class=\"sql keyword\">to<\/code> <code class=\"sql keyword\">Primary<\/code><code class=\"sql plain\">:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 2 seconds ago<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql keyword\">Last<\/code> <code class=\"sql plain\">Ping <\/code><code class=\"sql keyword\">to<\/code> <code class=\"sql plain\">Target:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0 seconds ago<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">Log File:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/u01\/app\/oracle\/admin\/prod20\/broker_files\/config_db21\/log\/observer_oraadserver3.log<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"sql spaces\">\u00a0\u00a0<\/code><code class=\"sql plain\">State File:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/u01\/app\/oracle\/admin\/prod20\/broker_files\/config_db21\/dat\/fsfo.dat<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"sql plain\">DGMGRL&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>On my observer server, the $DG_ADMIN variable is configured (directories of the DG_ADMIN must have some prerequisites (see previous <a href=\"https:\/\/www.dbi-services.com\/blog\/oracle-20c-data-guard-standardization-of-client-side-broker-files\/\" target=\"_blank\" rel=\"noopener\"> blog <\/a> or the <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/21\/dgbkr\/using-data-guard-broker-to-manage-switchovers-failovers.html#GUID-0C8473F6-33B5-479F-9208-9CA651F1B483\" target=\"_blank\" rel=\"noopener\"> documentation <\/a> )<\/p>\n<div>\n<div id=\"highlighter_835064\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[oracle@oraadserver3 callout]$ <\/code><code class=\"bash functions\">echo<\/code> <code class=\"bash plain\">$DG_ADMIN\/<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">\/u01\/app\/oracle\/admin\/prod20\/broker_files\/<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">[oracle@oraadserver3 callout]$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>And in the $DG_ADMIN<\/p>\n<div>\n<div id=\"highlighter_353950\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<div class=\"line number30 index29 alt1\">30<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[oracle@oraadserver3 callout]$ <\/code><code class=\"bash functions\">ls<\/code> <code class=\"bash plain\">-lR $DG_ADMIN\/<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">\/u01\/app\/oracle\/admin\/prod20\/broker_files\/<\/code><code class=\"bash plain\">:<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">total 0<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">drwx------. 2 oracle oinstall\u00a0 6 Feb\u00a0 3\u00a0 2021 admin<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">drwx------. 5 oracle oinstall 40 Feb 25 11:35 config_db21<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash plain\">\/u01\/app\/oracle\/admin\/prod20\/broker_files\/admin<\/code><code class=\"bash plain\">:<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash plain\">total 0<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"bash plain\">\/u01\/app\/oracle\/admin\/prod20\/broker_files\/config_db21<\/code><code class=\"bash plain\">:<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"bash plain\">total 4<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"bash plain\">drwx------. 2 oracle oinstall\u00a0\u00a0 99 Mar\u00a0 4 16:36 callout<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"bash plain\">drwx------. 2 oracle oinstall\u00a0\u00a0 21 Nov 29 13:50 dat<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"bash plain\">drwx------. 2 oracle oinstall 4096 Feb 25 13:35 log<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"bash plain\">\/u01\/app\/oracle\/admin\/prod20\/broker_files\/config_db21\/callout<\/code><code class=\"bash plain\">:<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"bash plain\">total 12<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"bash plain\">-rwx------. 1 oracle oinstall 979 Mar\u00a0 4 16:24 fsfocallout.ora<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"bash plain\">-rwx------. 1 oracle oinstall\u00a0 57 Feb 25 11:36 fsfo_postcallout<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"bash plain\">-rwx------. 1 oracle oinstall 351 Mar\u00a0 4 16:35 fsfo_precallout<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"bash plain\">-rw-r--r--. 1 oracle oinstall\u00a0\u00a0 0 Mar\u00a0 4 16:36 fsfo_precallout.suc<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"bash plain\">\/u01\/app\/oracle\/admin\/prod20\/broker_files\/config_db21\/dat<\/code><code class=\"bash plain\">:<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"bash plain\">total 12<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"bash plain\">-rw-r--r--. 1 oracle oinstall 8344 Mar\u00a0 4 16:48 fsfo.dat<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"bash plain\">\/u01\/app\/oracle\/admin\/prod20\/broker_files\/config_db21\/log<\/code><code class=\"bash plain\">:<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"bash plain\">total 84<\/code><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"bash plain\">-rw-r-----. 1 oracle oinstall 66093 Mar\u00a0 4 16:48 observer_oraadserver3.log<\/code><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"bash plain\">[oracle@oraadserver3 callout]$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>In the callout directory, we have the FSFO callout scripts<\/p>\n<div>\n<div id=\"highlighter_919258\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">oracle@oraadserver:<\/code><code class=\"bash plain\">\/u01\/app\/oracle\/admin\/prod20\/broker_files\/config_db21\/callout\/<\/code> <code class=\"bash plain\">[DB21 (CDB$ROOT)] <\/code><code class=\"bash functions\">pwd<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">\/u01\/app\/oracle\/admin\/prod20\/broker_files\/config_db21\/callout<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">oracle@oraadserver:<\/code><code class=\"bash plain\">\/u01\/app\/oracle\/admin\/prod20\/broker_files\/config_db21\/callout\/<\/code> <code class=\"bash plain\">[DB21 (CDB$ROOT)] <\/code><code class=\"bash functions\">ls<\/code> <code class=\"bash plain\">-l<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">total 12<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">-rwx------. 1 oracle oinstall 882 Feb\u00a0 1 16:11 fsfocallout.ora<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">-rwx------. 1 oracle oinstall\u00a0 37 Feb\u00a0 1 16:48 fsfo_postcallout<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash plain\">-rwx------. 1 oracle oinstall\u00a0 38 Feb\u00a0 1 16:47 fsfo_precallout<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash plain\">oracle@oraadserver:<\/code><code class=\"bash plain\">\/u01\/app\/oracle\/admin\/prod20\/broker_files\/config_db21\/callout\/<\/code> <code class=\"bash plain\">[DB21 (CDB$ROOT)]<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Let&#8217;s see the contents of each file<\/p>\n<p>fsfocallout.ora : fsfo callout configuration file<\/p>\n<div>\n<div id=\"highlighter_604118\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2 highlighted\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2 highlighted\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[oracle@oraadserver3 callout]$ <\/code><code class=\"bash functions\">cat<\/code> <code class=\"bash plain\">fsfocallout.ora<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash comments\"># This is a fast-start failover configuration file.<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash comments\"># The pre-callout script that is run before fast-start failover is enabled.<\/code><\/div>\n<div class=\"line number5 index4 alt2 highlighted\"><code class=\"bash plain\">FastStartFailoverPreCallout=fsfo_precallout<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash comments\"># The timeout value (in seconds) for pre-callout script<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash comments\">#FastStartFailoverPreCalloutTimeout=1200<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"bash plain\">FastStartFailoverPreCalloutTimeout=25<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"bash comments\"># The name of the suc file created by the pre-callout script.<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"bash plain\">FastStartFailoverPreCalloutSucFileName=fsfo_precallout.suc<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"bash comments\"># The name of the error file that the pre-callout script creates<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"bash plain\">FastStartFailoverPreCalloutErrorFileName=fsfo_precallout.err<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"bash comments\"># Action taken by observer if the suc file does not exist after FastStartFailoverPreCalloutTimeout seconds<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"bash comments\"># or if an error file is detected before FastStartFailoverPreCalloutTimeout seconds passed<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"bash plain\">FastStartFailoverActionOnPreCalloutFailure=STOP<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"bash comments\">#FastStartFailoverActionOnPreCalloutFailure=CONTINUE<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"bash comments\"># The post-callout script that is run after fast-start failover succeeds<\/code><\/div>\n<div class=\"line number23 index22 alt2 highlighted\"><code class=\"bash plain\">FastStartFailoverPostCallout=fsfo_postcallout<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"bash plain\">[oracle@oraadserver3 callout]$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>fsfo_precallout : to be executed before the FSFO<\/p>\n<div>\n<div id=\"highlighter_405531\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[oracle@oraadserver3 callout]$ <\/code><code class=\"bash functions\">cat<\/code> <code class=\"bash plain\">fsfo_precallout<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash preprocessor bold\">#! \/bin\/bash<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash keyword\">if<\/code> <code class=\"bash plain\">[ 1 -lt 100 ]<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash spaces\">\u00a0<\/code><code class=\"bash keyword\">then<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"bash functions\">touch<\/code> <code class=\"bash plain\">\/tmp\/test<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"bash functions\">echo<\/code> <code class=\"bash string\">\"starting fun observer\"<\/code> <code class=\"bash plain\">&gt; <\/code><code class=\"bash plain\">\/tmp\/test<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"bash functions\">touch<\/code> <code class=\"bash plain\">\/u01\/app\/oracle\/admin\/prod20\/broker_files\/config_db21\/callout\/fsfo_precallout<\/code><code class=\"bash plain\">.suc<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash keyword\">else<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash functions\">touch<\/code> <code class=\"bash plain\">\/u01\/app\/oracle\/admin\/prod20\/broker_files\/config_db21\/callout\/fsfo_precallout<\/code><code class=\"bash plain\">.err<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"bash keyword\">fi<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"bash plain\">[oracle@oraadserver3 callout]$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>fsfo_postcallout : to be executed after the FSFO<\/p>\n<div>\n<div id=\"highlighter_383987\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[oracle@oraadserver3 callout]$ <\/code><code class=\"bash functions\">cat<\/code> <code class=\"bash plain\">fsfo_postcallout<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash preprocessor bold\">#! \/bin\/bash<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash functions\">touch<\/code> <code class=\"bash plain\">\/tmp\/test_2<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash functions\">echo<\/code> <code class=\"bash string\">\"end fun observer\"<\/code> <code class=\"bash plain\">&gt;&gt; <\/code><code class=\"bash plain\">\/tmp\/test_2<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">[oracle@oraadserver3 callout]$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Now let&#8217;s simulate a FSFO and let&#8217;s see if the pre-callout and post-callout tasks are executed<\/p>\n<p>For this we will execute a shut abort of the primary database<\/p>\n<div>\n<div id=\"highlighter_154450\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">select<\/code> <code class=\"sql plain\">db_unique_name <\/code><code class=\"sql keyword\">from<\/code> <code class=\"sql plain\">v$<\/code><code class=\"sql keyword\">database<\/code><code class=\"sql plain\">;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql plain\">DB_UNIQUE_NAME<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"sql comments\">------------------------------<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql plain\">db21_site1<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"sql plain\">SQL&gt; shut abort<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"sql plain\">ORACLE instance shut down.<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"sql plain\">SQL&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>In the observer logfile, we can see following<\/p>\n<div>\n<div id=\"highlighter_252246\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2 highlighted\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1 highlighted\">14<\/div>\n<div class=\"line number15 index14 alt2 highlighted\">15<\/div>\n<div class=\"line number16 index15 alt1 highlighted\">16<\/div>\n<div class=\"line number17 index16 alt2 highlighted\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1 highlighted\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<div class=\"line number30 index29 alt1\">30<\/div>\n<div class=\"line number31 index30 alt2\">31<\/div>\n<div class=\"line number32 index31 alt1\">32<\/div>\n<div class=\"line number33 index32 alt2\">33<\/div>\n<div class=\"line number34 index33 alt1\">34<\/div>\n<div class=\"line number35 index34 alt2\">35<\/div>\n<div class=\"line number36 index35 alt1\">36<\/div>\n<div class=\"line number37 index36 alt2\">37<\/div>\n<div class=\"line number38 index37 alt1\">38<\/div>\n<div class=\"line number39 index38 alt2\">39<\/div>\n<div class=\"line number40 index39 alt1\">40<\/div>\n<div class=\"line number41 index40 alt2\">41<\/div>\n<div class=\"line number42 index41 alt1\">42<\/div>\n<div class=\"line number43 index42 alt2\">43<\/div>\n<div class=\"line number44 index43 alt1\">44<\/div>\n<div class=\"line number45 index44 alt2\">45<\/div>\n<div class=\"line number46 index45 alt1\">46<\/div>\n<div class=\"line number47 index46 alt2\">47<\/div>\n<div class=\"line number48 index47 alt1\">48<\/div>\n<div class=\"line number49 index48 alt2\">49<\/div>\n<div class=\"line number50 index49 alt1\">50<\/div>\n<div class=\"line number51 index50 alt2\">51<\/div>\n<div class=\"line number52 index51 alt1\">52<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[oracle@oraadserver3 callout]$ <\/code><code class=\"bash functions\">cat<\/code> <code class=\"bash plain\">\/u01\/app\/oracle\/admin\/prod20\/broker_files\/config_db21\/log\/observer_oraadserver3<\/code><code class=\"bash plain\">.log<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">1<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">[W000 2022-03-04T17:34:19.533+01:00] Primary database cannot be reached.<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">[W000 2022-03-04T17:34:19.534+01:00] Fast-Start Failover threshold has not exceeded. Retry <\/code><code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">the next 15 seconds<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">[W000 2022-03-04T17:34:20.534+01:00] Try to connect to the primary.<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">[W000 2022-03-04T17:34:33.053+01:00] Primary database cannot be reached.<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash plain\">[W000 2022-03-04T17:34:33.053+01:00] Fast-Start Failover threshold has not exceeded. Retry <\/code><code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">the next 1 second<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash plain\">[W000 2022-03-04T17:34:34.064+01:00] Try to connect to the primary.<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"bash plain\">[W000 2022-03-04T17:34:36.084+01:00] Primary database cannot be reached.<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"bash plain\">[W000 2022-03-04T17:34:36.084+01:00] Fast-Start Failover threshold has expired.<\/code><\/div>\n<div class=\"line number11 index10 alt2 highlighted\"><code class=\"bash plain\">[W000 2022-03-04T17:34:36.085+01:00] Succeeded to parse FSFO callout config <\/code><code class=\"bash functions\">file<\/code> <code class=\"bash string\">'\/u01\/app\/oracle\/admin\/prod20\/broker_files\/config_db21\/callout\/fsfocallout.ora'<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"bash plain\">[W000 2022-03-04T17:34:36.085+01:00] Try to connect to the standby.<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"bash plain\">[W000 2022-03-04T17:34:36.085+01:00] Check <\/code><code class=\"bash keyword\">if<\/code> <code class=\"bash plain\">the standby is ready <\/code><code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">failover.<\/code><\/div>\n<div class=\"line number14 index13 alt1 highlighted\"><code class=\"bash plain\">[W000 2022-03-04T17:34:36.106+01:00] Doing pre-FSFO callout.<\/code><\/div>\n<div class=\"line number15 index14 alt2 highlighted\"><code class=\"bash plain\">[W000 2022-03-04T17:34:37.107+01:00] Found the pre-FSFO callout suc <\/code><code class=\"bash functions\">file<\/code> <code class=\"bash string\">'\/u01\/app\/oracle\/admin\/prod20\/broker_files\/config_db21\/callout\/fsfo_precallout.suc'<\/code><\/div>\n<div class=\"line number16 index15 alt1 highlighted\"><code class=\"bash plain\">[W000 2022-03-04T17:34:37.107+01:00] Will <\/code><code class=\"bash keyword\">continue<\/code> <code class=\"bash plain\">Fast-Start Failover.<\/code><\/div>\n<div class=\"line number17 index16 alt2 highlighted\"><code class=\"bash plain\">[S025 2022-03-04T17:34:37.107+01:00] Fast-Start Failover started...<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"bash plain\">2022-03-04T17:34:37.107+01:00<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"bash plain\">Initiating Fast-Start Failover to database <\/code><code class=\"bash string\">\"DB21_SITE2\"<\/code><code class=\"bash plain\">...<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"bash plain\">[S025 2022-03-04T17:34:37.108+01:00] Initiating Fast-start Failover.<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"bash plain\">2022-03-04T17:34:37.124+01:00<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"bash plain\">Performing failover NOW, please wait...<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"bash plain\">2022-03-04T17:34:57.927+01:00<\/code><\/div>\n<div class=\"line number26 index25 alt1 highlighted\"><code class=\"bash plain\">Failover succeeded, new primary is <\/code><code class=\"bash string\">\"DB21_SITE2\"<\/code><code class=\"bash plain\">.<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"bash plain\">2022-03-04T17:34:57.927+01:00<\/code><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"bash plain\">Failover processing complete, broker ready.<\/code><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"bash plain\">2022-03-04T17:34:57.927+01:00<\/code><\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"bash plain\">[S025 2022-03-04T17:34:57.927+01:00] Fast-Start Failover finished...<\/code><\/div>\n<div class=\"line number32 index31 alt1\"><code class=\"bash plain\">[W000 2022-03-04T17:34:57.927+01:00] Failover succeeded. Restart pinging.<\/code><\/div>\n<div class=\"line number33 index32 alt2\"><code class=\"bash plain\">[W000 2022-03-04T17:34:57.937+01:00] Primary database has changed to DB21_SITE2.<\/code><\/div>\n<div class=\"line number34 index33 alt1\"><code class=\"bash plain\">[W000 2022-03-04T17:34:57.940+01:00] Try to connect to the primary.<\/code><\/div>\n<div class=\"line number35 index34 alt2\"><code class=\"bash plain\">\u2026<\/code><\/div>\n<div class=\"line number36 index35 alt1\"><code class=\"bash plain\">\u2026<\/code><\/div>\n<div class=\"line number37 index36 alt2\"><code class=\"bash plain\">[W000 2022-03-04T17:35:08.317+01:00] Failed to <\/code><code class=\"bash functions\">ping<\/code> <code class=\"bash plain\">the new standby.<\/code><\/div>\n<div class=\"line number38 index37 alt1\"><code class=\"bash plain\">[W000 2022-03-04T17:35:08.317+01:00] Try to connect to the new standby DB21_SITE1.<\/code><\/div>\n<div class=\"line number39 index38 alt2\"><code class=\"bash plain\">[W000 2022-03-04T17:35:11.317+01:00] Connection to the new standby restored!<\/code><\/div>\n<div class=\"line number40 index39 alt1\"><code class=\"bash plain\">[W000 2022-03-04T17:35:11.331+01:00] Failed to <\/code><code class=\"bash functions\">ping<\/code> <code class=\"bash plain\">the new standby.<\/code><\/div>\n<div class=\"line number41 index40 alt2\"><code class=\"bash plain\">[W000 2022-03-04T17:35:12.345+01:00] Try to connect to the new standby DB21_SITE1.<\/code><\/div>\n<div class=\"line number42 index41 alt1\"><code class=\"bash plain\">[W000 2022-03-04T17:35:15.331+01:00] Connection to the new standby restored!<\/code><\/div>\n<div class=\"line number43 index42 alt2\"><code class=\"bash plain\">[W000 2022-03-04T17:35:17.322+01:00] Failed to <\/code><code class=\"bash functions\">ping<\/code> <code class=\"bash plain\">the new standby.<\/code><\/div>\n<div class=\"line number44 index43 alt1\"><code class=\"bash plain\">[W000 2022-03-04T17:35:17.322+01:00] Try to connect to the new standby DB21_SITE1.<\/code><\/div>\n<div class=\"line number45 index44 alt2\"><code class=\"bash plain\">[W000 2022-03-04T17:35:23.322+01:00] Connection to the new standby restored!<\/code><\/div>\n<div class=\"line number46 index45 alt1\"><code class=\"bash plain\">[W000 2022-03-04T17:35:39.344+01:00] Try to connect to the primary DB21_SITE2.<\/code><\/div>\n<div class=\"line number47 index46 alt2\"><code class=\"bash plain\">[W000 2022-03-04T17:35:41.324+01:00] Connection to the primary restored!<\/code><\/div>\n<div class=\"line number48 index47 alt1\"><code class=\"bash plain\">[W000 2022-03-04T17:35:41.324+01:00] Wait <\/code><code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">new primary to be ready to reinstate.<\/code><\/div>\n<div class=\"line number49 index48 alt2\"><code class=\"bash plain\">[W000 2022-03-04T17:35:42.342+01:00] New primary is now ready to reinstate.<\/code><\/div>\n<div class=\"line number50 index49 alt1\"><code class=\"bash plain\">[W000 2022-03-04T17:35:43.342+01:00] Issuing REINSTATE <\/code><code class=\"bash functions\">command<\/code><code class=\"bash plain\">.<\/code><\/div>\n<div class=\"line number51 index50 alt2\"><\/div>\n<div class=\"line number52 index51 alt1\"><code class=\"bash plain\">[oracle@oraadserver3 callout]$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>In the callout directory we have the .suc file<\/p>\n<div>\n<div id=\"highlighter_527902\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[oracle@oraadserver3 callout]$ <\/code><code class=\"bash functions\">ls<\/code> <code class=\"bash plain\">-ltra *.suc<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">-rw-r--r--. 1 oracle oinstall 0 Mar\u00a0 4 17:34 fsfo_precallout.suc<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">[oracle@oraadserver3 callout]$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>And in \/tmp directory<\/p>\n<div>\n<div id=\"highlighter_95801\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[oracle@oraadserver3 callout]$ <\/code><code class=\"bash functions\">ls<\/code> <code class=\"bash plain\">-l <\/code><code class=\"bash plain\">\/tmp\/test<\/code><code class=\"bash plain\">*<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">-rw-r--r--. 1 oracle oinstall 22 Mar\u00a0 4 17:34 <\/code><code class=\"bash plain\">\/tmp\/test<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">-rw-r--r--. 1 oracle oinstall 17 Mar\u00a0 4 17:34 <\/code><code class=\"bash plain\">\/tmp\/test_2<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">[oracle@oraadserver3 callout]$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div>\n<div id=\"highlighter_696585\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[oracle@oraadserver3 callout]$ <\/code><code class=\"bash functions\">cat<\/code> <code class=\"bash plain\">\/tmp\/test<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">starting fun observer<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">[oracle@oraadserver3 callout]$ <\/code><code class=\"bash functions\">cat<\/code> <code class=\"bash plain\">\/tmp\/test_2<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">end fun observer<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">[oracle@oraadserver3 callout]$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3>Conclusion<\/h3>\n<p>Sure, that this feature will help (configuring clients before FSFO, stopping application \u2026.)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Mouhamadou Diaw With Oracle 21c (In fact Oracle 20c), we have a nice new feature with the broker which is the Fast-start Failover Callout Configuration scripts. I talked about this feature in some presentations I did about the new features with Oracle 21c for the broker This feature will allow to automate tasks that [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,198,59],"tags":[2511,2512,2513,138,236],"type_dbi":[],"class_list":["post-17148","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","category-database-management","category-oracle","tag-callout-scripts","tag-fsfo-callout-scripts","tag-oracle-21c-borker-new-feature","tag-oracle-21c-new-features","tag-oracle-data-guard"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Oracle 21c Broker : Fast-Start Failover Callout Scripts in Action - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Oracle 21c Broker : Fast-Start Failover Callout Scripts in Action\" \/>\n<meta property=\"og:description\" content=\"By Mouhamadou Diaw With Oracle 21c (In fact Oracle 20c), we have a nice new feature with the broker which is the Fast-start Failover Callout Configuration scripts. I talked about this feature in some presentations I did about the new features with Oracle 21c for the broker This feature will allow to automate tasks that [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-03-04T16:16:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-20T08:13:24+00:00\" \/>\n<meta name=\"author\" content=\"Oracle Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oracle Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"Oracle 21c Broker : Fast-Start Failover Callout Scripts in Action\",\"datePublished\":\"2022-03-04T16:16:01+00:00\",\"dateModified\":\"2023-06-20T08:13:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/\"},\"wordCount\":401,\"commentCount\":0,\"keywords\":[\"Callout scripts\",\"FSFO callout scripts\",\"Oracle 21c Borker New Feature\",\"Oracle 21c New features\",\"Oracle Data Guard\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Database management\",\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/\",\"name\":\"Oracle 21c Broker : Fast-Start Failover Callout Scripts in Action - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2022-03-04T16:16:01+00:00\",\"dateModified\":\"2023-06-20T08:13:24+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Oracle 21c Broker : Fast-Start Failover Callout Scripts in Action\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\",\"name\":\"Oracle Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"caption\":\"Oracle Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Oracle 21c Broker : Fast-Start Failover Callout Scripts in Action - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/","og_locale":"en_US","og_type":"article","og_title":"Oracle 21c Broker : Fast-Start Failover Callout Scripts in Action","og_description":"By Mouhamadou Diaw With Oracle 21c (In fact Oracle 20c), we have a nice new feature with the broker which is the Fast-start Failover Callout Configuration scripts. I talked about this feature in some presentations I did about the new features with Oracle 21c for the broker This feature will allow to automate tasks that [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/","og_site_name":"dbi Blog","article_published_time":"2022-03-04T16:16:01+00:00","article_modified_time":"2023-06-20T08:13:24+00:00","author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"Oracle 21c Broker : Fast-Start Failover Callout Scripts in Action","datePublished":"2022-03-04T16:16:01+00:00","dateModified":"2023-06-20T08:13:24+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/"},"wordCount":401,"commentCount":0,"keywords":["Callout scripts","FSFO callout scripts","Oracle 21c Borker New Feature","Oracle 21c New features","Oracle Data Guard"],"articleSection":["Database Administration &amp; Monitoring","Database management","Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/","url":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/","name":"Oracle 21c Broker : Fast-Start Failover Callout Scripts in Action - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2022-03-04T16:16:01+00:00","dateModified":"2023-06-20T08:13:24+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-broker-fast-start-failover-callout-scripts-in-action\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Oracle 21c Broker : Fast-Start Failover Callout Scripts in Action"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee","name":"Oracle Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","caption":"Oracle Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/17148","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=17148"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/17148\/revisions"}],"predecessor-version":[{"id":26136,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/17148\/revisions\/26136"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=17148"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=17148"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=17148"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=17148"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}