- PR -

Oracleでオープンカーソル数を超えたというエラー

1
投稿者投稿内容
いも
常連さん
会議室デビュー日: 2003/03/16
投稿数: 37
投稿日時: 2004-07-25 19:12
PreparedStatementを再利用して、INSERT文を9000回ほど実行したら、オープンカーソル数を超えたというエラーが出てしまいました。
9000回というのは多すぎたのでしょうか。
vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2004-07-25 22:15
Oracleの設定ファイルを編集してOPEN_CURSORSパラメータの値を
増やすと良いようです(要:再起動)。

あとは適度な分量に分割してcommitするとか…でしょうか。
いも
常連さん
会議室デビュー日: 2003/03/16
投稿数: 37
投稿日時: 2004-07-26 13:19
vincentさん、有難うございました。
OPEN_CURSORSパラメータの値を増やすとエラーが解消しました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-07-28 08:27
引用:

いもさんの書き込み (2004-07-26 13:19) より:
vincentさん、有難うございました。
OPEN_CURSORSパラメータの値を増やすとエラーが解消しました。


 これって、「解消」にしていいんですか?先送りしただけのように思いますけど。データ数がn倍に増えたら、また出てきたりしますよ。

 PreparedStatementということは、単にSQL*PLUSでINSERT文を発行しているのではなく、何らかのプログラミング言語、またはPL/SQLを利用しているわけですよね?その辺の情報がないのですが、カーソルを開いたまま、閉じていないのが原因ではないですか?
いも
常連さん
会議室デビュー日: 2003/03/16
投稿数: 37
投稿日時: 2004-07-28 13:28
JDBCのプログラムの中でStatementオブジェクトをループの中で呼び出していました。Jittaさんのご指摘の通りでした。
これから、ミスに気をつけようと思います。
どうも有難うございました。
vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2004-07-29 08:17
PreparedStatementを使っていると書いておられたので
当然のようにインスタンスを再利用していると考えてしまいました。

そこらへんをもうちょっと考えるべきでした。
勉強になりました>Jittaさん
1

スキルアップ/キャリアアップ(JOB@IT)