fast-start failover occurs when:

1) a datafile is offline because of a write error
2) dictionary corruption of a critical database object
3) control file damaged because of a disk error
4) LGWR is unable to write to any member of the log group because of an I/O error
5) Archiver is unable to archive a redo log because the device is full or unavailable
6) primary to observer and primary to standby network failure
7) an instance crash occurs (single instance)
8) all instances of a rac crash
9) shutdown abort of primary

Must install DGMGRL on an observer computer
To install either:
1) Install complete Oracle Client Administrator (use administrator option in OUI).
2) Install a full db installation

  1. PRE-REQS Must be in max availability or max performance
  2. LogXptMode must be in sync for 10g
    LogXptMode must be in SYNC in max availability for 11g
    LogXptMode must be in ASYNC in max performance for 11g
  3. FLASHBACK database must be enabled on primary and standby
  4. tnsnames.ora must be configured on the observer
  5. A static service name must exist so the observer can automatically restart databases.

Configuring fast-start failover:

  • Specify target databases
    DGMGRL> EDIT DATABASE pc00prmy SET PROPERTY FastStartFailoverTarget = pc00sby1;
    DGMGRL> EDIT DATABASE pc00sby1 SET PROPERTY FastStartFailoverTarget = pc00prmy;
  • Set the protection mode
    DGMGRL> EDIT DATABASE pc00prmy SET PROPERTY LogXptMode=SYNC;
    DGMGRL> EDIT DATABASE pc00sby1 SET PROPERTY LogXptMode=SYNC;
    DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MaxAvailability;

DGMGRL> EDIT DATABASE pc00prmy SET PROPERTY LogXptMode=ASYNC;
DGMGRL> EDIT DATABASE pc00sby1 SET PROPERTY LogXptMode=ASYNC;
DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MaxPerformance;

In max performance mode set the FastStartFailoverLagLimit property to an acceptable limit (seconds).
If the standby db is further behind than this value fast-start failover is not allowed.

  • Set the fast-start failover threshold
    DGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverThreshold = 30; (seconds, 30 is default)
    Recommended values:
    A) Single instance low latency reliable network 10 to 15
    B) Single instance high latency network over WAN 30 to 45
    C) RAC primary = (CSS misscount + reconfiguration time) + (24 to 40 seconds)
  • Set additional properties
    FastStartFailoverLagLimit (as above)
    FastStartFailoverPmyShutdown (FALSE | TRUE)
    When FALSE primary stalls awaiting diagnosis of the condition that caused the fast-start failover.
    When TRUE primary shutdowns with abort
    FastStartFailoverAutoReinstate (TRUE | FALSE)
    When TRUE the primary is restarted as a standby

Set the ObserverConnectIdentifier to specify how the observer should connect to and monitor the primary and standby databases.
DGMGRL> EDIT DATABASE pc00prmy SET PROPERTY ObserverConnectIdentifier = ‘ ‘;
Setting this property enables the observer to use the identifier to ship redo data.
The default identifier is the value of DGConnectIdentifier property
Can be specified to different valuses for primary and standby.

DGMGRL> ENABLE FAST_START FAILOVER CONDITION “value”;
DGMGRL> SHOW FAST_START FAILOVER;
e.g.
dgmgrl> enable fast_start failover condition “Datafile Offline”; *
dgmgrl> enable fast_start failover condition “Corrupted Controlfile”; *
dgmgrl> enable fast_start failover condition “Corrupted Dictionary”; *
dgmgrl> enable fast_start failover condition “Inaccessible Logfile”;
dgmgrl> enable fast_start failover condition “Stuck Archiver”;
* = default values.

DGMGRL> ENABLE FAST_START FAILOVER;
DGMGRL> START OBSERVER;
DGMGRL> SHOW CONFIGURATION VERBOSE;
DGMGRL> START OBSERVER FILE=$ORACLE_HOME/dbs/Boston.dat;
If file is not set the current working directory is searched for a file named FSFO.dat
Command is NOT returned to the user.
The DGMGRL observer must be stopped from another session with the STOP OBSERVER command.

DGMGRL> SHOW FAST_START FAILOVER;

INITIATING FAST-START FAILOVER FROM AN APPLICATION
==================================================
An application can initiate a fast_start failover using the procedure DBMS_DG.INITIATE_FS_FAILOVER
Requires SYSDBA privilege.
DBMS_DG.INITIATE_FS_FAILOVER calls DBMS_DRS.INITIATE_FS_FAILOVER.
Grant execute on DBMS_DG.INITIATE_FS_FAILOVER to the required users.

VIEWING FAST-START FAILOVER INFORMATION
=======================================
SELECT
FS_FAILOVER_STATUS AS STATUS,
FS_FAILOVER_CURRENT_TARGET AS CURR_TARGET, db_unique_name of target standby database
FS_FAILOVER_THRESHOLD AS THRESHOLD, seconds during which the observer will attempt to connect to primary before failover
FS_FAILOVER_OBSERVER_PRESENT AS OBS_PRES,
FS_FAILOVER_OBSERVER_HOST AS OBS_HOST
FROM V$DATABASE;

DETERMINING THE REASON FOR A FAST_START FAILOVER
================================================

SELECT LAST_FAILOVER_TIME, LAST_FAILOVER_REASON FROM V$FS_FAILOVER_STATUS;

MOVING THE OBSERVER
===================
STOP THE OBSERVER AND RECREATE ON A NEW HOST