As we all know that in unix, we have different runlevels and every runlevel have certain demons to be started and stopped. We can check the demons in each runlevel by going to directory /etc/rc.d/rc[0-6] or /etc/init.d (or some platform specific location).
Typical runlevels are 0 Halt, 6 reboot 3 Multi-User mode, 5 Multi-User mode with X11
Here we’ll see two types of scripts. Scripts starting with K(kill scripts) and S(Start scripts)
When the system is enters a specific run level, the K scripts in rc[0-6].d are run, then the S scripts are run. The idea is that the K scripts stop anything which might be running but which should not be running, followed by the S scripts start anything which should be running.
In case of database deployments on ASM, we should have ASM started first (ocssd.bin) & then database.
Typically in rc2/3.d which is the mostly used runlevel, we should have a S script for cssd/ohsad start and then followed by database startup script.
If we have ohsad/cssd startup script as S01ohasd/S02init.cssd, then the database startup script should be something like S96oradb (i.e. with higher number than 01/02). If this is not in place correctly, database will try to start before ASM diskgroups are mounted & fail to start.
cssd/ohsad also write to syslog in Linux. Syslog demon is started using a start script like S06syslog. If this demon is not started, cssd demon start may fail. So it is good to have dependency between syslog & cssd.