The error can be due to either a permission issue as evident in the former error message or due to corruption of colcache or checkpoint files located in /$SP_SYS_VARDIR/state directory. The permission for checkpoint files should look like the following in case Shareplex is started by a non-root user:
-rw------- 1 oracle spadmin 188 Jul 11 18:59 0xac140259+PA+o.SID+sp_ocap+o.SID.shs_chkpt
In case it is started by a root user, it would look like:
-rw------- 1 root dba 188 Jul 11 18:59 0xac140259+PA+o.SID+sp_ocap+o.SID.shs_chkpt
If Shareplex was earlier started by a root user, subsequent starting of Shareplex by a non-root user may result in the error "sp_ocap shs init failed" and one may want to start Shareplex as root. Otherwise one may want to change the ownership and permissions on the files in the state directory appropriately. Sometimes permissions/ownership may be changed by users without realizing the implications and the change needs to be undone.
The error also results from the corruption of colcache or checkpoint files. The solution in that case is to try the following to see if any of them work:
1. Shutdown Shareplex, remove the files shmaddr and shstinfo from the $vardir/rim directory and restart Shareplex.
2. Shutdown Shareplex. remove any hung semaphores and restart Shareplex
3. Shutdown Shareplex, rename both the colcache.a and colcache.b and restart Shareplex
4. Shutdown Shareplex, touch both the colcache.a and colcache.b and restart Shareplex
5. Shutdown Shareplex, touch both the cmap.a and cmap.b and restart Shareplex
6. Shutdown Shareplex, rename the shs_chkpt file and restart Sharpelex
If none of the above work, then it may need to be investigated further. The problem with colcache or checkpoint files can be due to system/OS problem. The renaming of these files can result in some data loss and the users need to be aware of that.