Oracle 11gR2データベースにアクセスするためにSpring JDBC 3.2.5を使用して Weblogic Server 12c で実行されている Java エンタープライズ アプリケーションがあります。本番環境でしばらくすると、 「ORA-01000 - 開いているカーソルの最大数を超えました」という例外が発生し、サーバー インスタンスを再起動する必要があります。開いているカーソルは、Oracle で設定された最大しきい値に達するまで、ますます増加しているようです。しきい値を増やしても問題は解決しませんでした。(非常に大きな) ソース コードを確認しましたが、現時点では接続を閉じていない箇所は見つかりませんでした。さらに、通常は接続を開いたり閉じたりしませんが、Spring JdbcTemplate を使用してデータベースの相互作用を処理します。春の問題でしょうか?ヒントはありますか?
3506 次
2 に答える
0
Oracle メッセージ「ORA-01000 - 開いているカーソルの最大数を超えました」PreparedStatement
は、 s またはsを閉じていないことが原因である可能性がありますResultSet
。PreparedStatement
またははそれぞれResultSet
、Oracle データベースのカーソルです。
このエラーを一時的に回避するには、データベースで開いているカーソルの制限を増やすことができます (ただし、遅かれ早かれ再び発生します)。
このエラーを実際に回避するには、アプリケーション全体を監査し、開いているすべてPreparedStatement
の やを閉じる必要がありResultSet
ます。
PreparedStatement
また、すべての やを追跡する中間 JDBC ドライバーResultSet
は、アプリケーションの問題のある部分を特定するのに役立ちます。
于 2014-09-22T12:19:56.183 に答える