- - PR -
ODP.NET Connectionに関して
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-06-16 23:26
VS2005でVB・ODP.NETを使用し、DBへの接続を試みておりますが、
closeを掛けたのに、OracleにIavtiveのセッションが残ってしまいます。 これを避ける方法はないのでしょうか? ご存知の方、教えていただけないでしょうか? <SOURCE> 'Oracleへのコネクションの確立 cnn.ConnectionString = _ "User Id=scott; Password=tiger; Data Source=ora10g" cnn.Open() '〜 データアクセスのコードを記述 〜 'コネクションを閉じる cnn.Close() | ||||||||
|
投稿日時: 2006-06-17 00:11
コネクションプーリングが有効になってるんじゃないですか? どうしても接続を完全にクローズしたいのなら無効にすればいいと思います、多分。 その必要があるのかは別途考慮したほうがいいかもしれませんが。 | ||||||||
|
投稿日時: 2006-06-17 01:25
ODP.NET では Close() してもセッションが即時開放されません
Dispose() を呼び出すようにしてください http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?mode=viewtopic&topic=31217&forum=7&start=16 | ||||||||
|
投稿日時: 2006-06-17 01:51
これってわりと昔のバージョンの話じゃないですかね? といいつつ元質問者の方がどのバージョン使ってるか分からないんで、 確かに可能性はありますね。 ※確認はして無いんでもしかしたら最近のものでもそうなのかもしれませんが… | ||||||||
|
投稿日時: 2006-06-17 22:50
皆様ありがとうございます。
環境を記述するのを忘れておりました。。。 DB:Oracle 10g エンタープライズサーバ IDE:Visual Studio 2005 Express Edition 言語:Visual Basic .NetFrameWork Version:2.0 コネクションプーリングの件ですが、 ConnectionString部分に"Pooling=false"とすればよいということでしょうか? またDispose()メソッドですが、 記述してもSessionは残ったままの状態でした。 | ||||||||
|
投稿日時: 2006-06-18 00:44
1000回OpenとCloseを繰り返してOracleにセッションが1000個できるのなら問題ですが…。
そうじゃなくて,一定の数で止まるのなら問題無いんじゃないですかね〜? | ||||||||
|
投稿日時: 2006-06-18 04:02
大事なのはOracleServerよりも ODP.NET のバージョンだったりして
コネクションが残るってそういうことか・・・ 上記で確かにプーリングは使用されないようになるとおもます。 ただ、本当にプーリングをオフにする必要があるのでしょうか OTN にコネクション関連のドキュメントもあるとおもいますが Connection Lifetime や Incr Pool Size などを適切に設定してあげると コネクションが足りなくなったりすることもないとおもいますが | ||||||||
|
投稿日時: 2006-06-18 10:07
なちゃ様、かるあ様 度々有難うございます。
>1000回OpenとCloseを繰り返してOracleにセッションが1000個できるのなら問題ですが…。 >そうじゃなくて,一定の数で止まるのなら問題無いんじゃないですかね〜? プーリングの機能というのが文献を読んでもいまいちピンとこないのですが、 クラサバシステムでユーザ単位プーリングの設定をする場合です。 ボタンクリック時に DBの接続開放部分を1つのサブプロシージャ内で完結する(変数も全てローカルで) 処理があった場合、処理終了後にはやはりSessionは残っていて そのクラサバシステムのexeを終了した時点で、Sessionが消えるようです。 ボタンクリック時処理が終了した時点ではSession情報はサーバ側で持っているという 認識でいいのでしょうか? あと、OracleのSession情報を見てみると意外と同様の事が原因で Inactive状態のSessionが残っております。それが気持ち悪い というか残しといていいものかと思ってしまいまして。。。 また、サーバで定義する、Session数のMax数を Inacviveのセッションでほとんど埋め尽くされたりいずれいないかと 危惧する部分もあります。 上記2点に関してアドバイス頂けないでしょうか? |