数据库连接未能正确释放的发现和解决

     一段时间发现,生产环境上发现批处理定时任务经常不能正确执行,导致规定时间未产生文件。

     检查jboss日志,报错信息为无法获取连接。

     判断应该是有程序的数据库连接未能正确释放。

     通过jboss的JMX Console 查看连接池使用情况( name=OracleDS,service=ManagedConnectionPool):

     其中InUseConnectionCount不为0,确定判断正确。

     在测试环境开启全部任务,通过PL/SQL developer的"Tools"-"sessions"查看会话状态,有大量inactive状态会话,排查会话,查找SQL,确定了未释放连接的程序,该程序在外层已有事务控制的情况下,做了一个sesssion.Transaction且没有结束。

     修正代码后问题解决。

猜你喜欢

转载自yijiangyanyu.iteye.com/blog/1631192