- - PR -
ORA-01000とOracleのカーソルについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-11-04 18:41
ASP.NETとOracleで開発していますが、
「ORA-01000 最大オープン・カーソル数を超えました。」 が出た場合、何に着目してデバッグしたらよいのでしょうか。 まずは、コネクションをクローズしてないところはないかどうか、 調べてるのですが、他にあるでしょうか。 そもそも、カーソルは、どの場合、何個オープンして、いつクローズするのでしょうか。 たとえばDataReaderを使う場合は、カーソルが1個オープンされて、 コネクションをクローズしたら、カーソルもクローズされると 考えていいのでしょうか。 それから、 更新系の場合も、カーソルって使うのでしょうか。 |
|
投稿日時: 2004-11-04 23:39
実際に開かれているカーソルの数を確認しながら、
試行錯誤しているうちに、おぼろげにわかってきました。 OracleDataReaderを使っている処理は、 その処理をやると、やるたびにカーソル数が1個ずつ増えていきました。 OracleDataAdapterにFillする場合はそうはなりません。 そこで、DataReaderを使っているところを良く見てみると、 コネクションのクローズはしていますが、DataReaderのクローズはしていません。 よもやと思って、DataReaderのクローズを入れてみました。 そうしたら、カーソル数が増えることはなくなりました。 コネクションをクローズすれば、DataReaderもクローズされるものと私は思っていたのですが、 それは、SQL Server.NETプロバイダや、OLE DB.NETプロバイダの場合であって、 Oracle.NETプロバイダの場合は違うんですかね。 今回の開発では、ODBC.NETプロバイダも使っているのですが、 こちらもDataReaderのクローズは入れていません。しかしカーソル数は増えませんでした。 Oracleだけそうなんですか? コネクションプールとのからみですかね。 私の認識や使い方が間違っていますでしょうか。 |
1