2014-09-22 31 views
1

我們對Weblogic Server的12C 運行的Java企業應用程序使用春天JDBC 3.2.5訪問的Oracle 11gR2的數據庫。 在一段時間後的生產環境中,我們得到以下異常: 「ORA-01000 - 超過最大打開遊標數」和服務器實例需要 要重新啓動;似乎打開的遊標越來越多地增加,直到達到Oracle設置的最大閾值。增加 閾值並沒有解決問題。 我們檢查(非常大)的源代碼,但我們沒有發現任何點 我們錯過了關閉連接,此刻;而且我們通常不會打開和關閉連接,但是我們使用Spring JdbcTemplate來處理數據庫交互,從而處理 。 可能是一個春天的問題? 任何提示?ORA-01000 - 最大打開的遊標超出 - 春天JDBC 3.2.5

+1

可能重複的[java.sql.SQLException: - ORA-01000:超過最大打開遊標](http://stackoverflow.com/questions/12192592/java-sql-sqlexception-ora-01000-maximum-open-遊標超出) – Xstian 2014-09-22 12:20:54

回答

0

Oracle消息「ORA-01000 - 最大打開的遊標超出」可以通過不關閉PreparedStatement S或ResultSet s內引起的。每個PreparedStatementResultSet是Oracle數據庫中的一個遊標。

爲了在短期內規避這個錯誤,可以增加數據庫中打開遊標的限制(但遲早會再次發生)。

爲了規避此錯誤,您必須審覈完整的應用程序並關閉所有打開的PreparedStatement s或ResultSet s。

此外,跟蹤所有PreparedStatement s或ResultSet的中間JDBC驅動程序可幫助識別應用程序的問題部分。

+1

謝謝,但我們不使用** PreparedStatement **,我們使用** Spring JdbcTemplate ** * http://docs.spring.io/spring-framework/docs/2.5.x/api/org/ springframework/jdbc/core/JdbcTemplate.html),所以我們不需要明確** OPEN **和** CLOSE **連接。你有一些「中間JDBC驅動程序」的鏈接?彈簧jdbc模板面臨同樣問題的 – pacionet 2014-09-22 12:33:38

+0

。你找出問題了嗎? – 2016-10-14 04:17:17

相關問題