Scenario 5: Setting up Maximum Availability Mode with a Far Sync Instance

A far sync instance can be used with maximum availability protection mode if the primary and standby database are geographically far enough apart to make the use of synchronous transport mode impractical.

The example in this topic shows how to add a far sync instance to the configuration and then set up the RedoRoutes property for all members of the configuration. Setting of RedoRoutes property for the far sync instance enables it to send redo data based on either the North_Sales or South_Sales database being the primary.

  1. Issue the following commands to add the far sync instance named FS1 to the broker configuration:
    DGMGRL> ADD FAR_SYNC 'FS1' AS CONNECT IDENTIFIER IS FS1;
    far sync instance "FS1" added
    DGMGRL> ENABLE FAR_SYNC 'FS1';
    Enabled.
    DGMGRL> SHOW CONFIGURATION;
    
    Configuration - DRSolution
    
      Protection Mode: MaxPerformance
      Members:
      North_Sales - Primary database
        South_Sales - Physical standby database 
        FS1         - Far sync instance 
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
    SUCCESS   (status updated 22 seconds ago)
    

    In this output, South_Sales and FS1 are indented under North_Sales. This indicates that the primary is sending redo data to both South_Sales and FS1.

  2. Issue the following commands so that the current primary North_Sales only sends redo data to the far sync instance FS1 and the far sync instance sends redo data to South_Sales when North_Sales is a primary. In addition, configure redo transport for the current standby database South_Sales so that when it is in the primary role it sends redo data to the far sync instance FS1. The example assumes that the LogXptMode property for all configuration members is set to the default ASYNC value.
    DGMGRL> EDIT DATABASE 'North_Sales' SET PROPERTY RedoRoutes='(LOCAL : FS1 SYNC)';
    Property "redoroutes" updated for member "North_Sales".
    DGMGRL> EDIT FAR_SYNC 'FS1' SET PROPERTY RedoRoutes='(North_Sales : South_Sales)’;
    Property "redoroutes" updated for member "FS1".
    DGMGRL> EDIT DATABASE 'South_Sales' SET PROPERTY RedoRoutes='(LOCAL : FS1 SYNC)';
    Property "redoroutes" updated for member "South_Sales".
    DGMGRL> SHOW CONFIGURATION;
    
    Configuration - DRSolution
    
      Protection Mode: MaxPerformance
      Members:
      North_Sales - Primary database
        FS1         - Far sync instance 
          South_Sales - Physical standby database 
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
    SUCCESS   (status updated 58 seconds ago)
    
    

    The indentation scheme in the output above indicates that North_Sales sends redo data to FS1 and FS1 sends redo data to South_Sales.

  3. Issue the following commands to upgrade the protection mode to maximum availability:
    DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MaxAvailability;
    Succeeded.
    DGMGRL> SHOW CONFIGURATION;
    
    Configuration - DRSolution
    
      Protection Mode: MaxAvailability
      Members:
      North_Sales - Primary database
        FS1         - Far sync instance 
          South_Sales - Physical standby database 
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
    SUCCESS   (status updated 32 seconds ago)
    
  4. Configure Redo Transport to Support Future Role Transitions
    To verify redo transport is correctly configured if South_Sales ever becomes the primary database, issue the following command:
    DGMGRL> SHOW CONFIGURATION WHEN PRIMARY IS 'South_Sales';
     Configuration when South_Sales is primary - DRSolution
    
      Members:
      South_Sales - Primary database
        FS1         - Far sync instance 
    
      Members Not Receiving Redo:
      North_Sales - Physical standby database 
        Warning: ORA-16685: database does not receive redo data
    

    To correct this error, set the RedoRoutes property for South_Sales and FS1 as follows:

    DGMGRL> EDIT DATABASE 'South_Sales' SET PROPERTY RedoRoutes='(LOCAL : FS1 SYNC)';
    DGMGRL> EDIT FAR_SYNC 'FS1' SET PROPERTY RedoRoutes=('North_Sales : 
    South_Sales)(South_Sales : North_Sales)';
    
    Property "redoroutes" updated for member "FS1".

    After the change to the RedoRoutes property for far sync instance FS1 is complete, reissue the SHOW CONFIGURATION WHEN PRIMARY IS command to confirm that the error has been resolved:

    DGMGRL> SHOW CONFIGURATION WHEN PRIMARY IS 'South_Sales';
    
    Configuration when South_Sales is primary - DRSolution
    
      Members:
      South_Sales - Primary database
        FS1         - Far sync instance 
          North_Sales - Physical standby database