0

Is it possible to keep one node running in 2 node cluster while keeping one node down for Maintenance?.I want to do this as we are planning some hardware upgrades.

1
  • 2
    Yes. That is the point of high availability. Dec 6 '16 at 14:38
1

It is actual quite easy if you are obvious of some caveats:

  • configure your services to run on one node only: srvctl modify service -db $DATABASE -service $SERVICENAME -preferred $INSTANCE1 -available $INSTANCE2 -modifyconfig
  • wait for the sessions to wander to the node running $INSTANCE1. This may take some time, it's heavily dependent on the type of application you are running. JAVA Applications tend to reconnect quite frequently. So check with your database, e.g. query gv$session.

  • Take down your node and do whatever maintenance there is to do

  • Reconfigure your services to run on the second node:

    1. srvctl modify service -db $DATABASE -service $SERVICENAME -preferred "$INSTANCE1,$INSTANCE2" -modifyconfig
    2. srvctl start service -db $DATABASE -service $SERVICENAME -node $NODE This step is crucial, if you omit it, the whole procedure won't work!
    3. srvctl modify service -db $DATABASE -service $SERVICENAME -preferred $INSTANCE2 -available $INSTANCE1 -modifyconfig
  • wait again for the sessions to wander to your patched node

  • Take down your second node and do whatever maintenance there is to do
  • reconfigure your services to run on both nodes and start the services
    1. srvctl modify service -db $DATABASE -service $SERVICENAME -preferred "$INSTANCE1,$INSTANCE2" -modifyconfig
    2. srvctl start service -db $DATABASE -service $SERVICENAME

The procedure must be tested in your environment as there may be dependencies e.g. if you use a shared ORACLE_HOME on ACFS. The success of reconfiguration of services must be tested, especially if you have client-server applications.

Not the answer you're looking for? Browse other questions tagged or ask your own question.