Modify service error - CRS-0211 PRKP-1029

When I tried to modify a service to add available instances and preferred instances, I did couple of times and it errors out with

PRKP-1029 : Failed to register the service ges_taf.
CRS-0211: Resource 'ora.ges.ges_taf.cs' has already been registered.

I removed the service using srvctl and it got removed successfully.

[oracle]> srvctl remove service -d ges -s ges_taf
ges_taf PREF: AVAIL: ges1 ges2 ges3
Remove service ges_taf from the database ges? (y/[n]) y

Then I tried to add it again, it failed with a similar error

[oracle]> srvctl add service -d ges -s ges_taf -r ges1,ges2,ges3 -P BASIC
PRKP-1029 : Failed to register the service ges_taf.
CRS-0211: Resource 'ora.ges.ges_taf.cs' has already been registered.

After some research found that the only way to get rid of this error is to unregister the resource using crs_unregister. Oracle does not recommend it. But in the past I had to wait long time to get an answer from Oracle on this. So this time I did following

First check if the service is registered with OCR and not running

[oracle]> crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora...._taf.cs application OFFLINE OFFLINE
ora....es1.srv application OFFLINE OFFLINE
ora....es2.srv application OFFLINE OFFLINE
ora....es3.srv application OFFLINE OFFLINE

[oracle]> srvctl config service -d ges

logged in as root

cd $CRS_HOME

Make sure first unregister the srv and then cs, else it will give errors while unregistering

[oracle]>crs_stat -p > /tmp/1
[root]> grep srv /tmp/1
NAME=ora.ges.ges_taf.ges1.srv
NAME=ora.ges.ges_taf.ges2.srv
NAME=ora.ges.ges_taf.ges3.srv
[root]> ./crs_unregister ora.ges.ges_taf.ges1.srv
[root]> ./crs_unregister ora.ges.ges_taf.ges2.srv
[root]> ./crs_unregister ora.ges.ges_taf.ges3.srv
[root]> grep ".cs" /tmp/1
NAME=ora.ges.ges_taf.cs
[root]> ./crs_unregister ora.ges.ges_taf.cs

Check this time if its not with CRS anymore

[oracle]> crs_stat -t
[oracle]> srvctl add service -d ges -s ges_taf -r ges1,ges2,ges3 -P BASIC
[oracle]> srvctl config service -d ges
ges_taf PREF: ges1 ges2 ges3 AVAIL:

1 comment: