CRS-0223: Resource ‘ResourceName’ has placement error

While I was implementing rac, I notice some of the service were online and some were unknown. I try to start the service itself, it didn’t start and ‘placement’ error showed up. This happend because when trying to start the crs with the crsctl start crs command on both nodes, there was not enough time between the start process.
I manage to solve this by try and error method. Not an issue because this is only test rac environment, not production.

$ crs_stat -t
Name           Type           Target    State     Host
————————————————————
ora….SM1.asm application    ONLINE    ONLINE    innotiive01
ora….01.lsnr application    ONLINE    ONLINE    innotiive01
ora….e01.gsd application    ONLINE UNKNOWN innotiive01
ora….e01.ons application    ONLINE    ONLINE    innotiive01
ora….e01.vip application    ONLINE    ONLINE    innotiive01
ora….SM2.asm application    ONLINE    ONLINE    innotiive02
ora….02.lsnr application    ONLINE    ONLINE    innotiive02
ora….e02.gsd application    ONLINE UNKNOWN innotiive02
ora….e02.ons application    ONLINE UNKNOWN innotiive02
ora….e02.vip application    ONLINE    ONLINE    innotiive02
ora.orcl.db    application    ONLINE    ONLINE    innotiive02
ora….l1.inst application    ONLINE    ONLINE    innotiive01
ora….l2.inst application    ONLINE UNKNOWN innotiive02
ora…._taf.cs application    ONLINE UNKNOWN innotiive02
ora….cl1.srv application    ONLINE UNKNOWN innotiive01
ora….cl2.srv application    ONLINE UNKNOWN innotiive02

when you try to start any of the services, it will gave placement error. To view the real name of the services, just issue crs_stat command.
$./crs_start ora.orcl.orcl_taf.orcl2.srv

So, in order to make all the services goes back online, we must shutdown/startup back all the services in the correct order. I’m executing the command one by one on node 1.

Stop procedure
1. stop taf service
$ srvctl stop service -d orcl -s orcl_taf

2. stop instance
$ srvctl stop instance -d orcl -i orcl1
$ srvctl stop instance -d orcl -i orcl2

3. stop asm
$ srvctl stop asm -n innotiive01
$ srvctl stop asm -n innotiive02

4. stop nodeapps
$ srvctl stop nodeapps -n innotiive01
$ srvctl stop nodeapps -n innotiive02

At this point, all the services will be in offline state. Let’s start it back. Remember, execute one by one the command at node 1.
$ crs_stat -t
Name           Type           Target    State     Host
————————————————————
ora….SM1.asm application    OFFLINE   OFFLINE
ora….01.lsnr application    OFFLINE   OFFLINE
ora….e01.gsd application    OFFLINE   OFFLINE
ora….e01.ons application    OFFLINE   OFFLINE
ora….e01.vip application    OFFLINE   OFFLINE
ora….SM2.asm application    OFFLINE   OFFLINE
ora….02.lsnr application    OFFLINE   OFFLINE
ora….e02.gsd application    OFFLINE   OFFLINE
ora….e02.ons application    OFFLINE   OFFLINE
ora….e02.vip application    OFFLINE   OFFLINE
ora.orcl.db    application    OFFLINE   OFFLINE
ora….l1.inst application    OFFLINE   OFFLINE
ora….l2.inst application    OFFLINE   OFFLINE
ora…._taf.cs application    OFFLINE   OFFLINE
ora….cl1.srv application    OFFLINE   OFFLINE
ora….cl2.srv application    OFFLINE   OFFLINE

Start procedure
1. start nodeapps
$ srvctl start nodeapps -n innotiive01
$ srvctl start nodeapps -n innotiive02

2. start asm
$ srvctl start asm -n innotiive01
$ srvctl start asm -n innotiive02

3. start instance
$ srvctl start instance -d orcl -i orcl1
$ srvctl start instance -d orcl -i orcl2

4. start taf
$ srvctl start service -d orcl -s orcl_taf

Actually for taf service, I’m not sure when to start/stop it first. I can’t find any information regarding this. But this procedure work fine with my rac.