We've talked about this a couple times on this forum. IMHO, monitoring each individual process does not give you adequate enough information to determine whether your database is accessible or not. For example, you may have a pmon process but your database is only in mount mode. All your background processes may be up, but your log_archive_dest is full.

I believe (as do several others) that the best way to monitor connectivity is to actually login to the database. If you login, great. If you can't, you get an error which will indicate what you should do.

To accomplish this task for my environment, I wrote a perl script that tries to login to the database. If I login, great, I just log out and go to sleep for N seconds. If I get an error, I know what to do about it. If the connection attempt takes longer than X seconds, I timeout and know what to do about it.