All of the above are great suggestions. This is what I have setup.
NSCA daemon on nagios server. Nsca script on each of 6 Oracle database servers running Solaris. On each remote server, there is a small nagios setup that runs checks. These checks are the check_oracle plugins that query the db for many different things, tablespace free, etc. Each check outputs it's data using the nsca script, which connects to the nsca daemon on nagios server, that data then is written to the external command file, and then processed by the nagios server.
What the above does to help you, is this. There is no active connection from nagios server to db server. All db checks are done locally withing the check_oracle plugin which are extreemely fast and don't hold up anyone. DB are designed to handle thousands of queries per second, so I doubt that you are placing any kind of load on the server. I've monitored the load imposed by my kind of setup, and it can't even be measured. Nagios has never locked up, never did anything bad to the server, and is performing flawlessly. Checks are done every 5 minutes and have given us warning of many impending troubles of tablespace being filled up. We graph each check on nagios server with nagiostat.
But to answer your question directly, yes. Just make sure your script outputs to the external command file with the proper syntax.
Edited Fri Dec 16 2005, 05:24PM ]