Dbvisit Standby and Oracle RAC

For more information on the installation of Dbvisit Standby on an Oracle RAC configuration please see this section: Install Dbvisit Standby on Oracle RAC and Configure Oracle RAC Primary with Oracle RAC Standby

Dbvisit Standby can be used together with Oracle RAC (Real Application Cluster). RAC allows multiple instances on different nodes to access a shared database on a cluster system. RAC allows scalability and provides high availability. Oracle RAC together with Dbvisit Standby standby database(s) provides high availability and disaster recovery. Dbvisit Standby supports archive logs in Oracle ASM file system.
The standby database can be a RAC standby database (figure 2) or it can be a single instance standby database (figure 3).

Figure 2 – RAC primary database with RAC standby database 

Figure 3 – RAC primary database with single instance standby database

Dbvisit Standby installation with RAC

Dbvisit Standby should be installed on each primary RAC node and on all standby servers.

Dbvisit Standby should be configured separately on each RAC primary node. Please follow the normal Dbvisit Installation, but pay attention to the special RAC comments and instructions. 

Dbvisit Standby considerations with RAC

The Dbvisit Standby Database Configuration file (DDC) created during the setup on each node will have the name of the instance and not the name of the database (dbv_oracle_instance.env).
Dbvisit Standby needs to be scheduled separately on each primary node. It is recommended that Dbvisit Standby is scheduled at different times on each node. For example:


node1 – Schedule every hour at 00, 15, 30, 45
node2 – Schedule every hour at 02, 17, 32, 47


The archive destination location on the standby node must be accessible by all standby nodes in the RAC standby cluster.

Dbvisit Standby RAC Takeover

If a RAC node fails and is unavailable, then Dbvisit Standby on another RAC node can automatically take over the log shipment from the failed node. The Dbvisit Standby RAC Takeover is controlled by the following variables in the dbv{_}oracle_instance.env file:

RAC_TAKEOVER
RAC_TAKEOVER_SID
RAC_TAKEOVER_FORCE

 

RAC_TAKEOVER:

  • Yes = Dbvisit Standby (on this instance) will take over from another instance when that instance is unavailable.
  • No = Dbvisit Standby (on this instance) will NOT take over from another instance when that instance is unavailable. 

RAC_TAKEOVER_FORCE:

  • Yes = Dbvisit Standby (on this instance) will take over from another instance regardless of whether that instance is available or not.
  • No = Dbvisit Standby (on this instance) will NOT take over from another instance unless the instance is not available and RAC_TAKEOVER = Yes. 

 

NOTE: When using RAC_TAKEOVER_FORCE=Y from one of the Oracle RAC nodes, it will ship all logs for all nodes from this node. This is an option you can use to allow you to run Dbvisit Standby on only one of the Oracle RAC nodes (having Dbvisit Standby scheduled on only one of the nodes. It is however required that on initial installation, you must run Dbvisit Standby first on all the RAC nodes to ship logs for that node (thread) and then once you have confirmed that Dbvisit Standby is shipping and applying logs, you can then schedule it to run only from one of the Nodes by setting RAC_TAKEOVER_FORCE=Y one the required node.

 

 

RAC_TAKEOVER_SID

  • Specify the instance name that Dbvisit Standby processing should take over if that instance is unavailable.
  • The instance name must be different to the current instance name.

 

 

Example - 2 Node Primary RAC configuration

If the RAC setup contains 2 nodes (racnode1, racnode2) with instance names RACDB1 and RACDB2, then:
On racnode1 the dbv_RACDB1.env will contain:

RAC_TAKEOVER_SID=RACDB2
RAC_TAKEOVER=Y


On racnode2 the dbv_RACDB2.env will contain:

RAC_TAKEOVER_SID=RACDB1
RAC_TAKEOVER=Y


This ensures that if either node is unavailable, the other node will takeover log shipment to the standby database(s).

Example - 3 Node Primary RAC Configuration

The RAC_TAKEOVER_SID is not too different with a 3 node set up, as for a 2, and you just specify the next node in the sequence in a rolling/circular fashion. So, if the RAC setup contains 3 nodes (racnode1, racnode2, racnode3) with instance names RACDB1, RACDB2 and RACDB3 then:

On racnode1 the dbv_RACDB1.env will contain:

RAC_TAKEOVER_SID=RACDB2
RAC_TAKEOVER=Y



On racnode2 the dbv_RACDB2.env will contain:

RAC_TAKEOVER_SID=RACDB3
RAC_TAKEOVER=Y



On racnode3 the dbv_RACDB3.env will contain:

RAC_TAKEOVER_SID=RACDB1
RAC_TAKEOVER=Y



This ensures that if a particular node is unavailable, the 'next' node will takeover log shipment to the standby database(s). And if there are more than 3 nodes in the RAC configuration then you just follow this same approach and specify the 'next' node, in a rolling/circular fashion.

Standby node setup with RAC

The standby database can be configured as a single instance database or as a RAC database with several instances on different standby nodes.
Single standby database instance (Figure 3 – RAC primary database with single instance standby database)

  • All primary nodes need to send the archive logs to the single standby node.
  • Dbvisit Standby will apply the archives from all threads to the standby database.
  • Dbvisit Standby is scheduled on the standby server using the instance name from one of the primary nodes. Example if the RAC configuration has 2 instances called RACDB1 and RACDB2 and the standby database is called RACDB, then Dbvisit Standby is executed on the standby server using the command:

dbvisit RACDB1
RAC standby database instances (Figure 2 – RAC primary database with RAC standby database)

  • All primary nodes need to send the archive logs to a shared location on the RAC standby cluster.
  • Dbvisit Standby only needs to be scheduled on one standby instance to apply the archives from all threads to the standby database.
  • Dbvisit Standby must be dormant on all the other standby nodes. An automated job can be scheduled to enable Dbvisit Standby if it is detected that the standby node on which Dbvisit Standby is active is no longer available.