Implementing DR Failover to Downstream Recovery Appliance

This section provides steps on how to configure a protected database for transparent failover of backup operations and redo transport to a downstream Recovery Appliance.

As part of disaster recovery, protected databases should failover to a downstream Recovery Appliance as the target for sending backup files and redo transport if the upstream Recovery Appliance is unavailable.

For sake of clarity, this examples makes the following assumptions:

  • If you have real time redo transport enabled, it receives an error and stops sending redo to the upstream Recovery Appliance. Within a minute, real time redo transport connects to the downstream Recovery Appliance and resumes sending redo there.
  • The name of the example protected database is CDB122DR. It is a Container Databases with One Pluggable Database.
  • The name of the example upstream Recovery Appliance is RAHADR1.
  • The name of the example downstream Recovery Appliance is RAHADR2.
  • A common VPC user called HADR_COMMON_VPCUSER was created on both Recovery Appliances and must use the same password on both.
  • A local VPC user called HADR_LOCAL_VPCUSER has been created on both Recovery Appliances but the password can be different between the two.
  • The replication server between RAHADR1 and RAHADR2 is using the VPC user REPUSER_FROM_HADR1.

When using a Data Guard setup that has primary and standby databases, they have the same dbid and dbname, so each must have a different db_unique_name. Use a unique control file autobackup format at primary and standby to guarantee uniqueness. The format can be specified by using RMAN configuration settings. Default Controlfile Autobackup Format:

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT_TAPE TO '%F';

Add db_unique_name to the default format for both primary and standby databases:

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT_TAPE TO '<db_unique_name>_%F';

The db_unique_name is obtained from from v$database.

select db_unique_name from v$database;