那麼連線池與資料庫之間為什麼會斷開呢?原因是:引用別人的話「程式如果長時間不進行資料庫操作,那麼資料來源中的connection很可能已經斷開。其原因有可能是防火牆或者連線資料庫設定超時時間」。看到這裡,心想也許真是這個問題,元旦三天假,系統無人使用,沒有進行任何資料庫操作
進一步探索原因,首先檢視資料庫設定的最大空閒時間,系統使用的是oracle資料庫,首先檢視系統預設的空閒時間idle_time值,通過「select resource_name,resource_type,limit from dba_profiles where profile='default'」,得到值為unlimited,然後檢視sqlnet.ora檔案,也沒有配置sqlnet.expire_time值,那麼可以肯定連線斷開不是由oracle資料庫連線空閒時間設定造成的,這也是與存在大量inactive狀態連線不謀而合。那麼斷開原因的很可能與防火牆有關了。系統與資料庫是部署在不同的伺服器上,資料庫和應用之間的訪問通過防火牆,而防火牆對空閒的的連線配置的超時時間,一般預設為30分鐘。關於防火牆具體的配置沒有深入研究。
原因是發現了,如何避免以後再次出現這種問題呢?別人給出的解決方法是在配置c3p0時,一定要新增如下配置:
這樣就不會出現連線超時的問題了。好了,收工。
資料庫重連
4.2.10 資料庫自動重連 dbcp使用apache的物件池objectpool作為連線池的實現,在構造genericobjectpool時,會生成乙個內嵌類evictor,實現自runnable介面。如果 timebetweenevictionrunsmillis大於0,每過 timebetwe...
JDBC連Oracle資料庫
string drivername oracle.jdbc.driver.oracledriver string url jdbc oracle thin 172.28.139.78 1521 oracts string username scott string password tiger tr...
PL SQL Developer配置資料庫連線
1.伺服器a裝有oracle server 本機b需要連線a。2.在本機b中安裝oracle client 測試時安裝了企業版server 方式一 1.在本機b的程式中,找到orcale的net manager工具,並開啟。2.新建服務命令。a.net服務名,輸入自定義的名稱,如jf 129 位於1...