Managing Oracle RAC node changes in Delphix

The addition and removal of cluster nodes from an Oracle Cluster must be considered where Delphix has dSources attached to RAC databases running from the same cluster environment or RAC VDB's provisioned out to those cluster nodes.  Each scenario needs to be considered in its own right as dSources and VDBs require specific changes be made to accommodate the removal of a cluster node.

The changes required by Delphix and made within Oracle that need to be considered when the Oracle cluster node configuration alters and the process for removing or adding an Oracle cluster node is best demonstrated through an example. 

The oracle cluster is comprised of 2 cluster nodes as seen from olsnodes.

[oracle@oelc9n1 ~]$ su - grid
Last login: Thu Nov 30 17:15:36 AEDT 2017 on pts/1

[grid@oelc9n1 ~]$ . oraenv
ORACLE_SID = [grid] ? +ASM1
The Oracle base has been set to /u01/app/grid

[grid@oelc9n1 ~]$  olsnodes -s -t
oelc9n1	Active	Unpinned
oelc9n2	Active	Unpinned

Node 2 in the cluster oelc9n2 is the node targeted for removal from the Oracle cluster.

Delphix dSources and removing Oracle Cluster nodes.

In this example Delphix has a 2 Node Oracle RAC database being ingested as a dSource.  The sample database name is db121 comprised of 2 RAC instances db1211 and db1212.  The instance impacted by the removal of node oelc1n2 is db1212. The dSource configuration appears as follows:

The cluster node, its associated listeners and instances must be deleted from the cluster through Oracles RAC RDBMS and Clusterware software using the processes described in the Oracle documentation. 

This begins with the removal of the RAC instance using the process detailed in the Oracle RAC documentation. This example is operating against an Oracle 12.1 RAC and Cluster and the documentation link this specific release is the following:

Removing RAC Instances and Homes

Removal of the RAC instance is typically executed through the database configuration assistant dbca and using the UI provided through dbca the instance db1212 is removed from node oelc9n2.  After the instance has been deleted using dbca, Oracles srvctl utility will show one instance only (db1211) running from node oelc9n1.

[oracle@oelc9n1 ~]$ srvctl config database -d db121

Database unique name: db121
Database name: db121
Oracle home: /u01/app/oracle/12.1
Oracle user: oracle
Spfile: +DATA/DB121/PARAMETERFILE/spfile.289.961441955
Password file: +DATA/DB121/PASSWORD/pwddb121.277.961441737
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: 
Disk Groups: FRA,DATA
Mount point paths: 
Type: RAC
Start concurrency: 
Stop concurrency: 
OSDBA group: dba
OSOPER group: 
Database instances: db1211
Configured nodes: oelc9n1
Database is administrator managed

Following the removal of the instance the inventory on the node to be removed is updated to reflect removal of the Oracle Home that was running this dSource instance on the node.  This too must be performed according to the Oracle documentation. Oracles utility runInstaller is used for Oracle inventory maintenance. This must be performed using the operating system owner of the RDBMS Home (in this case oracle)

With the RAC instance and RAC Home removed the node itself can be removed using the process detailed in Oracles Clusterware Administration documentation,

Removing Oracle Cluster Nodes

This must be performed as the Oracle Clusterware home operating system owner (in this case grid).

Removal of the node from within Oracles RDBMS and Clusterware software does not alter the fact that Delphix still sees the Oracle Cluster and RAC configuration as it was the last time an environment refresh was performed against the cluster.

The Environment in Delphix shows both cluster nodes are still present along with any node listeners that may have been discovered running on that node.

The dSource shows the node and both instances still present this needs to be cleaned up from a Delphix perspective.

Aligning Delphix with the new Oracle Cluster configuration.

In order for Delphix to pick up on the latest changes to the environment (OELC9) in this case the removal of an entire node from the Oracle Cluster an environment refresh must be performed.

This is performed through the environments management panel in the Delphix Management application and the refresh icon present on the top right hand side of the panel (highlighted in red).

Clicking on the icon presents a prompt indicating that an environment refresh is about to be initiated.

Click on refresh to kick off the environment refresh action.

The environment refresh will force Delphix to re-examine the Oracle Cluster. 

This will result in the environment and the dSource being updated based on the clusters current node, instance and listener configuration where only one node oelc9n1 is present.

After the node removal the cluster environment in Delphix will look as follows and only oelc9n1 appears in the cluster node list.

The dSource will now be comprised of only one instance db1211 running from node oelc9n1.