一段时间发现,生产环境上发现批处理定时任务经常不能正确执行,导致规定时间未产生文件。
检查jboss日志,报错信息为无法获取连接。
判断应该是有程序的数据库连接未能正确释放。
通过jboss的JMX Console 查看连接池使用情况( name=OracleDS,service=ManagedConnectionPool):
其中InUseConnectionCount不为0,确定判断正确。
在测试环境开启全部任务,通过PL/SQL developer的"Tools"-"sessions"查看会话状态,有大量inactive状态会话,排查会话,查找SQL,确定了未释放连接的程序,该程序在外层已有事务控制的情况下,做了一个sesssion.Transaction且没有结束。
修正代码后问题解决。