已连接上的数据库因各种原因断开,怎么判断连接状态

已连接上的数据库因各种原因断开,如何判断连接状态?
C/S模式,oracle数据库,采用pb的专用oracle接口。数据库连接上后,因网络、数据库服务、进程被杀等等原因造成客户端数据库连接被断开,pb接着会报通信结束等等错误。我试图在time或idle事件中判断数据库连接是否正常,有没有什么好的办法?
额,首先不考虑以下几种方法:
1.看网上有些说用 事务对象.dbhandle() 返回值判断,查看help,这玩意根本就是个连接后的常量,不重连不会变,所以不可行。
2.不想用简单查询去判断sqlcode,因为数据库一断开,去执行一个sql起码等待30秒,还得看参数设置成多少。。。
3.不想用ping服务器,一是有防火墙,二是无法判断数据库本身的问题。tnsping也不想用。

总结:有没有啥便宜量又足的现成方法?我是真的懒人。。。
------解决方案--------------------
http://topic.csdn.net/t/20020415/10/647199.html
------解决方案--------------------
用个select 语句是最直接的办法,试过oracle,连接断了后,不用1秒就可以返回结果,而不是楼主说的30秒

用ping不好用,因为数据库连接断开后,网络又畅通了,虽然可以ping通,但数据库连接还是断的
------解决方案--------------------
如果的的CS模式里S不止SQLSERVER也有程序的话,可以建立socket通信判断。
------解决方案--------------------
每次使用连接时,就connnect一下