2012-03-08 60 views
8

我们有太多的Oracle进程的一个问题被创建(2,000)当连接被限制为1100(使用C3P0)关系处理

两个问题:

  • Oracle进程和JDBC连接之间的关系是什么?是否为每个会话创建一个Oracle流程?是否为每个JDBC 陈述创建?根本没有关系?

  • 你有没有遇到过这种情况,在哪里创建比JDBC连接更多的进程?

如有任何意见,我们将不胜感激。

回答

2

有一个本质每个连接的SSION。这听起来像你有一个连接泄漏,某处你打开一个新的连接,并没有正确关闭。一种可能性是您在try区块内打开,使用和关闭连接,并且正在处理catch中的异常,或者由于某种原因而提前返回。如果是这样,您需要确保连接关闭在finally中完成,否则可能不会发生,从而导致连接(因此会话)挂起。在同一范围内打开两个连接而没有明确的关闭也可以这样做。

我不熟悉C3PO,所以不知道如何处理连接,或在何处以及如何实施1100限制;如果它(或者你)有一个连接池,并且你所指的1100是最大池大小,那么这听起来不像这个问题,因为你在会话上限之前达到了池盖。

您可以查看v$session以确认所有会话都来自JDBC,并且没有其他连接。