2012-03-08 89 views
8

我們有太多的Oracle進程的一個問題被創建(2,000)當連接被限制爲1100(使用C3P0)關係處理

兩個問題:

  • Oracle進程和JDBC連接之間的關係是什麼?是否爲每個會話創建一個Oracle流程?是否爲每個JDBC 陳述創建?根本沒有關係?

  • 你有沒有遇到過這種情況,在哪裏創建比JDBC連接更多的進程?

如有任何意見,我們將不勝感激。

回答

2

有一個本質每個連接的SSION。這聽起來像你有一個連接泄漏,某處你打開一個新的連接,並沒有正確關閉。一種可能性是您在try區塊內打開,使用和關閉連接,並且正在處理catch中的異常,或者由於某種原因而提前返回。如果是這樣,您需要確保連接關閉在finally中完成,否則可能不會發生,從而導致連接(因此會話)掛起。在同一範圍內打開兩個連接而沒有明確的關閉也可以這樣做。

我不熟悉C3PO,所以不知道如何處理連接,或在何處以及如何實施1100限制;如果它(或者你)有一個連接池,並且你所指的1100是最大池大小,那麼這聽起來不像這個問題,因爲你在會話上限之前達到了池蓋。

您可以查看v$session以確認所有會話都來自JDBC,並且沒有其他連接。