DBAtlas · データベース運用アトラス

ORA-01000: Maximum open cursors exceeded(オープンカーソルの最大数を超過)

Oracle

意味

セッションが OPEN_CURSORS パラメータで許可された数を超えるカーソルをオープンした。新しいカーソルはオープンできない。

原因

アプリケーションがオープンした Statement/ResultSet オブジェクトをクローズしていない (カーソルリーク)、OPEN_CURSORS がワークロードに対して低すぎる、またはループ内で新しいプリペアドステートメントを次々に準備してクローズしていない。

対処方法

オープンカーソルを監視する: SELECT * FROM v$open_cursor WHERE sid = ... さらに v$sesstat でセッションごとの数を確認する。本当の解決策は、アプリケーションですべての Statement/ResultSet を finally ブロックでクローズすること (カーソルリークの解消)。回避策として OPEN_CURSORS を増やす: ALTER SYSTEM SET OPEN_CURSORS = 1000。JDBC のステートメントキャッシュサイズを見直す。

DBAtlas で開く →

同じデータベースの他の項目