Sunday, October 4, 2020

CRS-2974: unable to act on resource

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

No comments:

Post a Comment