I have a resource (call it A) to monitor another resource (call it B). The check portion of the action script of A is as follow:
+'check')+ LOCAL_NODE=`/bin/hostname | /bin/cut -d "." -f1` cmd=`$ORACLE_HOME/bin/crsctl stat res A_RESOURCE -n $LOCAL_NODE | /bin/grep TARGET | /bin/grep ONLINE`
+if [ "$cmd" == "" ];then+ exit 1 fi
Basically, and following the documentation, when you type crsctl stop, the target value of a resource is intented to be OFFLINE. So I check for this attribute and return 1 or 0 as needed. This is the correct behaviour since I don't want to stop the B resource.
The problem is when I stop CRS through crsctl stop crs. When I do it the resource A always fails. I don't know if when you do a planned stop, the crs doesn't call the normal stop resource and the TARGET value is not changed.
Anyone know the difference of the resources stop task flow between crsctl stop crs and crsctl stop res A?
Thanks in advance!
There are two things that you need to understand:
1) difference b/w TARGET & STATE
2) crsctl stop crs & crsctl stop res A
1) Target shows whether clusterware will try to start the resource automatically or not. State represent current status of any resource managed by clusterware.
2) crsctl stop crs, will stop entire clusterware according to to the dependency.
crsctl stop res A, will only stop ressource A not other resources of the clusterware.
Maybe I didn't explain enough or I can't see an answer for my question. My question is as follow:
Why if I do crsctl stop res A the TARGET value changes and when I do crsctl stop crs (which is suppose to stop resource A too) the TARGET value doesn't change? This is the behaviour I'm having right now and I don't know exactly why.