我们有一个用Java编写的Web服务,它连接到Oracle数据库以进行数据提取.最近,我们在JDBC数据库中遇到了太多非活动会话,这是我们的Web服务.
我们非常确定所有连接都已关闭,并在每个进程后设置为null.
任何人都可以帮助我们吗?为什么它会导致数据库中的非活动会话以及可以解决此问题的方法.
谢谢.
究竟是什么问题?
通常,中间层应用程序服务器会创建连接池.当您的代码请求连接时,它从池中获取已经打开的连接,而不是经历产生与数据库的新连接的开销.当您的代码关闭连接时,连接将返回到池,而不是通过物理关闭连接的开销.这意味着在数据库中存在合理数量的连接,其中STATUSin V$SESSION在任何给定时间点都是"非活动的".那是完全正常的.
即使在负载下,大多数时候,来自中间层的大多数数据库连接都是"非活动的".状态"INACTIVE"仅表示在您运行查询的瞬间,会话未执行SQL语句.大多数连接将花费大部分时间坐在连接池中等待Java会话打开它们,或等待Java会话对数据执行某些操作或等待网络在计算机之间传输数据.
您是否真的收到错误(即ORA-00020:超出最大进程数)?或者你只是对参赛作品数量感到困惑V$SESSION?
| 归档时间: |
|
| 查看次数: |
17006 次 |
| 最近记录: |