java.sql.SQLException: ORA-00604: 遞歸 SQL 級別 1 出現錯誤


后台報出如下錯誤:

Caused by: java.sql.SQLException: ORA-00604: 遞歸 SQL 級別 1 出現錯誤

ORA-01000: 超出打開游標的最大數

ORA-00604: 遞歸 SQL 級別 1 出現錯誤

ORA-01000: 超出打開游標的最大數

ORA-01000: 超出打開游標的最大數

原因:

這個錯誤一般出現在利用代碼循環執行數據庫命令(例如將數據導入到數據庫或者定時任務向數據庫中插入數據)時,例如在java中

1.建立一個Connection

2.循環創建PreparedStatement,並執行數據導入

3.關閉OracleConnection

當第二步的循環數比較小時,代碼運行正常。當循環數超過一定值(例如300),代碼就會出錯。提示:

ORA-01000: 超出打開游標的最大數

Oracle數據庫中打開的游標最大數為一定值,默認情況下是300,當代碼到第二步時, 循環中一個PreparedStatement占用了一個數據庫游標,執行的循環超過這個數時就會產生游標數目溢出錯誤。

解決辦法:

第二步循環中每次執行完PreparedStatement,都將PreparedStatement.close()下,釋放掉這個資源就好了

此外,也可以修改數據庫的最大游標數,不過這個方法治標不治本。( alter system set open_cursors=1000 scope=both; )


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM