Problem:
On a 19c RAC DB when shutting down any instance gracefully using srvctl command it throws this error:
$ srvctl stop instance -d proto -i proto2
PRCD-1131 : Failed to stop database proto and its services on nodes r6ttnode2
PRCR-1133 : Failed to stop database proto and its running services
PRCR-1132 : Failed to stop resources using a filter
CRS-2974: unable to act on resource ‘ora.proto.db’ on server ‘r6ttnode2’ because that would require stopping or relocating resource ‘ora.proto.jdbcapp.svc’ but the appropriate force flag was not specified
Analysis:
If you have created a service on RAC 19c with -preferred option, SRVCTL command will not shutdown the instance unless you use -force parameter, which will not allow the transactions to failover to the other available node in case you are using TAF policy (Transparent Application Failover).
Workarounds:
– [Recommended] First stop the services on the instance you want to shut down, then shutdown the instance gracefully using SRVCTL command: [This will allow the QUERIES to failover to the other available node]
$ srvctl stop service -d proto -i proto2
$ srvctl stop instance -d proto -i proto2
– [Less recommended] Shutdown the instance gracefully from the SQLPLUS console: [This will allow the QUERIES to failover to the available node]
$ export ORACLE_SID=proto2
SQL> SHUTDOWN IMMEDIATE;
Note: Unless you are having and ADG or GoldenGate setup, SHUTDOWN ABORT of a RAC instance is considered a safe procedure as well. I personally start with SHUTDOWN IMMEDIATE as I’ve faced rare cases in the past; where ABORTING an instance can corrupt any controlfiles.
– [Least recommended] Shutdown the instance forcefully using SRVCTL command: [Current Running QUERIES will fail]
$ srvctl stop instance -d proto -i proto2 -force
Note:
This SRVCTL error doesn’t show up when stopping the whole DB (all instances at once): using: $ srvctl stop database -d proto