Automating Database Role Transitions in a Manual Data Guard with OCI Full Stack DR

Introduction

When you create any of the supported DR plans using OCI Full Stack DR, OCI Full Stack DR provides built-in modules for the Oracle Database PaaS listed below, as long as Data Guard was set up using the Cloud automation available from those services.

  1. Oracle Base DB

  2. Oracle Exadata DB on dedicated infrastructure

Customers might use Oracle Base DB or Oracle Exadata DB on dedicated infrastructure with manual data configuration for various use cases, such as multiple standbys or Fast-Start Failover (FSFO).Customers sometimes run Oracle Database in OCI Standard Compute VMs with Data Guard. To integrate these types of Oracle Databases with Full Stack DR, you can customize the DR plans with user-defined plan groups and manage database role changes using scripts or OCI functions.

In this blog, I will show you how to use Full Stack DR to automate role changes for databases where Data Guard is manually configured on a Base DB system.

Architecture

Architecture

For simplicity, all the resources used in this blog are in the same region across two Availability Domains in the Ashburn region. This should also work for cross-region Data Guard. I have used the Base DB system for Oracle DB. Ideally, as part of Full Stack DR plans, you will have recovery steps for Compute, Storage, Database, Applications, etc. This blog covers only the Oracle DB recovery steps.

Availability Domain 1:

  1. Base DB System: adghol-qtv-iad (DB Unique name) ( Primary DB)

  2. Compute VM: oel8-1 (VM to host scripts)

Availability Domain 2:

  1. Base DB System : adghol-3px-iad (DB Unique name) (Standby DB)

  2. Compute VM: oel8-2 (VM to host scripts)

Regional:

  1. DR Protection Group (DRPG) : DB-AD1 and DB-AD2

Pre-requisites:

  1. Oracle Data Guard has been manually set up between the two Base DB systems. Ensure the databases have the correct roles. For additional details, refer to Oracle Data Guard documentation.

    DB Roles

  2. We will use oel8-1 and oel8-2 for running the scripts. Make sure to prepare the VMs to use the run command feature. For more details, refer Full Stack DR run command.

  3. Install the Oracle Client on both VMs, oel8-1 and oel8-2. This will help connect to the database through TNS. Update the necessary security lists to allow the VMs to connect to the database.

  4. Create scripts for performing the DB role reversal using DGMGRL commands. I have placed the "changedbrole.sh" script in the /home/opc/dbscripts folder on both VMs.

    Example: For Switchover from AD1 to AD2, run

    /home/opc/dbscripts/changedbrole.sh switchover adghol_qtv_iad adghol_3px_iad

You can use any script, as long as you can handle the DB role changes.

  1. Ensure the script works correctly for operations like switchover, failover, converting to snapshot standby, and converting to physical standby.

Integration with Full Stack DR

  1. Create DRPG's DB-AD1 and DB-AD2 in the Ashburn region. Assign DB-AD1 as the Primary role and DB-AD2 as the Standby role.

  2. Add "oel8-1" to DB-AD1 (DRPG) as a non-moving member and "oel8-2" to DB-AD2 (DRPG) as a non-moving member. Since we have configured Data Guard manually, there is no need to add Oracle Database as a member.

  3. Create DR plans in DB-AD2 DRPG. Full Stack DR lets you create a Stop drill plan only after completing the Start drill. Initially, you won't see all four plan types, but I created the Stop drill plan once the Start drill plan was done.

  4. Customize the DR plans with user-defined plan groups using the "changedbrole.sh" script. Here, I have added a user-defined plan group for the switchover plan with the script details.

Similarly, I added the necessary user-defined plan groups for the respective plans.

DR Plan typeDR plansScript
SwitchoverDB Switchover-AD1-AD2/home/opc/dbscripts/changedbrole.sh switchover adghol_qtv_iad adghol_3px_iad
FailoverDB Failover-AD1-AD2/home/opc/dbscripts/changedbrole.sh failover adghol_qtv_iad adghol_3px_iad
Start drillDB StartDrill (Snapshot Standby)-AD1-AD2/home/opc/dbscripts/changedbrole.sh convert_to_snapshot adghol_qtv_iad adghol_3px_iad
Stop drillDB StopDrill ( Physical Standby)-AD1-AD2/home/opc/dbscripts/changedbrole.sh convert_to_physical adghol_qtv_iad adghol_3px_iad
  1. Test all the DR plans and verify their successful execution.

If you execute a failover plan, you need to reinstate the failed primary database (adghol_qtv_iad) as soon as it becomes available. This must be done outside of the Full Stack DR plan.

  1. Similarly, I have created all four types of DR plans in the other DB-AD1 (DRPG). Full Stack DR allows creating plans in the DRPG with a Standby role, so make sure to create the plans accordingly.

  2. Customize the DR plans with user-defined plan groups using the dbrolechange.sh script. Here, I have added a user-defined plan group for the switchover plan with the script details.

    Similarly, I have added the necessary user-defined plan groups for each respective plan.

DR Plan typeDR plansScript
SwitchoverDB Switchover-AD2-AD1/home/opc/dbscripts/changedbrole.sh switchover adghol_3px_iad adghol_qtv_iad
FailoverDB Failover-AD2-AD1/home/opc/dbscripts/changedbrole.sh failover adghol_3px_iad adghol_qtv_iad
Start drillDB StartDrill (Snapshot Standby)-AD2-AD1/home/opc/dbscripts/changedbrole.sh convert_to_snapshot adghol_3px_iad adghol_qtv_iad
Stop drillDB StopDrill ( Physical Standby)-AD2-AD1/home/opc/dbscripts/changedbrole.sh convert_to_physical adghol_3px_iad adghol_qtv_iad
  1. Test all the DR plans and verify their successful execution.

If you execute a failover plan, you need to reinstate the failed primary database (adghol_3px_iad) as soon as it becomes available. This must be done outside of the Full Stack DR plan.

  1. Considering you now have all four plan types available in both DB-AD1 and DB-AD2 DRPGs, the plans will become active or inactive depending on the DRPG role. The Primary DRPG will have plans in an inactive state, while the Standby DRPG will have plans in an active state.

Drill plans will become active during the drill plan execution.

Conclusion:

In conclusion, we have learned how to automate Oracle Database roles with Full Stack DR for Oracle Databases using manual Data Guard configuration. This can greatly improve the efficiency and reliability of your disaster recovery plans. By following the outlined steps, you can easily integrate manually configured Data Guard setups into Full Stack DR, ensuring smooth role transitions and strong protection for your Oracle databases and your Full Stack.

Additional Resources: