2011-10-18 88 views
0

我們有一個用Java編寫的Web應用程序,它正在連接到Oracle數據庫以進行數據提取。最近,我們在使用Grails框架的我們的Web應用程序JDBC中遇到了太多Oracle數據庫中的非活動會話。即使我們點擊UI頁面中的刷新按鈕,INACTIVE SESSION大小也會增加。這將會長時間(以天爲單位)。Web應用程序通過jdbc在Oracle中創建非活動會話

我們確信所有的連接都在關閉,並且在每個進程之後都設置爲空。

任何人都可以幫助我們嗎?爲什麼會導致數據庫中的非活動會話以及可以解決的問題。

回答

0

我們確信所有的連接都在關閉,並且在每個進程之後都設置爲空。

如果您手動關閉連接(這似乎是這種情況,如果使用JDBC),爲什麼不使用日誌記錄來分析造成新連接的原因?

也許你也使用連接池?也許你以共享模式連接到ORACLE?

可能有太多maybes直到您提供更多信息。

更新:

在評論,你說,你明確關閉連接池爲什麼
強烈建議使用連接池,因此每次需要與數據庫進行交互時,應用程序都不會生成新連接,而是使用池中的連接。因此,首先確保您實際使用連接池。很可能你使用應用程序服務器(如果是這樣,而不是指定哪一個),我也懷疑你使用普通的JDBC。最有可能的是,它是Hibernate或任何其他持久性提供者,對嗎?

參見: Inactive session in Oracle by JDBC

+0

是的,我們正在使用連接池(javax.sql.PooledConnection中)用於獲取連接和我們的Oracle專用模式。 –

+0

甚至在UI頁面刷新INACTIVE SESSION大小增加。 –

+0

我已經在finally塊中關閉了javax.sql.pooledconnection並且分配了null,但是我仍然能夠看到DB中的INACTIVE SESSIONS .code就像... finally {_pconn.close(); _pconn = null; \t \t OBTContext.info(「_ pconn.close()」+ _ pconn); } –

相關問題