090721週二

[TIP]關於Java開發中使用Oracle數據庫的一點注意事項(原創)

很多朋友在Java開發中,使用Oracle數據庫的時候,經常會碰到有ORA-01000: maximum open cursors exceeded.的錯誤。

實際上,這個錯誤的原因,主要還是代碼問題引起的。
ora-01000: maximum open cursors exceeded.
表示已經達到一個進程打開的最大遊標數。

這樣的錯誤很容易出現在Java代碼中的主要原因是:Java代碼在執行conn.createStatement()和conn.prepareStatement()的時候,實際上都是相當與在數據庫中打開了一個cursor。尤其是,如果你的createStatement和prepareStatement是在一個循環裏面的話,就會非常容易出現這個問題。因爲遊標一直在不停的打開,而且沒有關閉。

一般來說,我們在寫Java代碼的時候,createStatement和prepareStatement都應該要放在循環外面,而且使用了這些Statment後,及時關閉。最好是在執行了一次executeQuery、executeUpdate等之後,如果不需要使用結果集(ResultSet)的數據,就馬上將Statment關閉。

對於出現ORA-01000錯誤這種情況,單純的加大open_cursors並不是好辦法,那只是治標不治本。實際上,代碼中的隱患並沒有解除。
而且,絕大部分情況下,open_cursors只需要設置一個比較小的值,就足夠使用了,除非有非常特別的要求。

發佈了75 篇原創文章 · 獲贊 3 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章