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 のステートメントキャッシュサイズを見直す。
同じデータベースの他の項目
- ORA-00942Table or view does not exist(表またはビューが存在しない)
- ORA-01031Insufficient privileges(権限不足)
- ORA-00257Archiver error. Connect internal only, until freed(アーカイバエラー)
- ORA-00018Maximum number of sessions exceeded(セッションの最大数を超過)
- ORA-28000The account is locked(アカウントがロックされている)
- ORA-01578Oracle data block corrupted (file #, block #)(Oracle データブロックの破損)
- ORA-01722Invalid number(数値が無効)