LoginSignup
2
0

More than 5 years have passed since last update.

oracle-enhancedのOCIError: ORA-01000エラー解消

Posted at

概要

ORA-01000: 最大オープン・カーソル数を超えました。
ORA-01000: maximum open cursors exceeded

OracleをActive Recordで使うためのgem、rsim/oracle-enhancedで起こり得る最大オープンカーソル超過問題について原因と解決策をメモ。確認環境はRails 5.1系、oracle-enhanced 1.8.2。

解決方法

Oracleで設定されているOpen Cursorsよりもやや少ない数をdatabase.ymlでstatement_limitとして設定する。

SQL> select name,value from v$parameter where name = 'open_cursors';
=> 300
database.yml
default: &default
  adapter: oracle_enhanced
  statement_limit: 250

Open Cursorsが1200ならstatement_limitを1000、300なら250など。エラー文面からは超過しないように一致するよう設定すればよいようにも読めるが、実際には余剰にカーソルが消費されることがありギリギリだと超過エラーが発生する。

解説

見ての通り、Oracle側で設定されたOpen cursors以上にカーソルを消費しようとした場合に発生するエラー。adapter 1.8.0からstatement_limitのデフォルト値が1000になっており、Oracle側のopen cursorsがそれを下回るような環境ではエラーが発生するようになった。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0