我有一个Web应用程序,需要时不时地连接到数据库,我确信我正在关闭我正在打开的每个新连接实例。 问题我在同一用户的oracle db中有很多非活动会话。我试过汇集,我试图关闭所有会话但似乎没有什么工作正常。我已经在stackover流程中搜索了可能的解决方案,但遗憾的是没有找到我的解决方案的答案,我最接近的是Inactive session in Oracle by JDBC,提出问题的人自己回答问题时说他修改了代码。
任何答案,建议将不胜感激
答案 0 :(得分:1)
我尝试过汇集......
如果没有连接池,您的应用程序可以直接控制打开和关闭数据库连接。这不是典型的情况,因为获取物理连接是一项代价高昂的操作。
连接池优化它,同时保持特定数量的连接打开,并根据请求向应用程序提供。
如果某个连接被应用程序关闭,它在数据库中没有关闭,它在池中可用作 idle 。您可以控制其他参数池中应保留多少空闲连接。例如。对于DBCP,请检查参数 minIdle 和 maxIdle 。除了一些连接无效的特殊情况,你看到的空闲连接数(那些连接是不活动的)应该在这个限制范围内。
如果您看到系统性更高的数字(甚至是越来越多的数字)INACTIVE会话,最可能的解释是应用程序从池中获取连接并且忘记了#34;返回它 - 那些会话也是不活跃的。