JDBC中的Oracle非活动会话

Ian*_*the 3 oracle jdbc

我们有一个用Java编写的Web服务,它连接到Oracle数据库以进行数据提取.最近,我们在JDBC数据库中遇到了太多非活动会话,这是我们的Web服务.

我们非常确定所有连接都已关闭,并在每个进程后设置为null.

任何人都可以帮助我们吗?为什么它会导致数据库中的非活动会话以及可以解决此问题的方法.

谢谢.

Jus*_*ave 8

究竟是什么问题?

通常,中间层应用程序服务器会创建连接池.当您的代码请求连接时,它从池中获取已经打开的连接,而不是经历产生与数据库的新连接的开销.当您的代码关闭连接时,连接将返回到池,而不是通过物理关闭连接的开销.这意味着在数据库中存在合理数量的连接,其中STATUSin V$SESSION在任何给定时间点都是"非活动的".那是完全正常的.

即使在负载下,大多数时候,来自中间层的大多数数据库连接都是"非活动的".状态"INACTIVE"仅表示在您运行查询的瞬间,会话未执行SQL语句.大多数连接将花费大部分时间坐在连接池中等待Java会话打开它们,或等待Java会话对数据执行某些操作或等待网络在计算机之间传输数据.

您是否真的收到错误(即ORA-00020:超出最大进程数)?或者你只是对参赛作品数量感到困惑V$SESSION

  • 嗨贾斯汀,感谢您的回复。问题是数据库中有太多的 INACTIVE 条目并且正在达到阈值。有没有办法摆脱那些 INACTIVE 条目? (2认同)