- PR -

Session_Endイベントについて

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-02-23 19:19
> オラクルを切断するタイミングに困ってしまいます。
 使う直前に接続して、使い終わった直後に切断する。

 $ORACLE_HOME/network/admin に、 sqlnet.ora というファイルがあるので、これを開いてみてください。この中に

SQLNET.AUTHENTICATION_SERVICES= (NONE)

と書かれていれば、これを

SQLNET.AUTHENTICATION_SERVICES= (NTS)

にして、リスナーを再起動してください。そして、Windowsアプリケーションを作り、ボタンクリックで接続、切断を繰り返すような仕組みにしてください。このアプリで接続にどれくらいの時間がかかるか、計測してみてください。
 最初の接続には5秒(環境依存)ほどかかりますが、2度目以降はほとんど時間がかかっていないことがわかると思います。こういう状態になりますので、接続を開いたままにしておく必要はありません。
 しかし、接続文字列が変わってしまうと、この恩恵にあずかれません。セッションにしまうなら、接続文字列だけでいいです。

 なお、上記設定は「デフォルトでWindows認証を使う」という設定なので、Oracleの認証とWindowsの認証を結びつけていないなら、 (NONE) にしておきましょう。最初の接続もスピードアップします。反対に、認証情報が結びついているなら、上記方法でコネクションプールの有効性を確認することは出来ません(^o^;


 それと、接続をセッションにしまえたということは、セッション管理をインプロセスで行っていると判断します。その場合のリスクも承知されているでしょうか?MSDNに書かれていますので、よく目を通すとこをお勧めします。接続プールについてもMSDNに書かれています。調べておいてください。

 ちなみに、セッション終了イベントが、「どんな場合でも、必ず発生する」とは思わないでください。発生しない状況もあります。


 あとは、中センセも書かれているとおり、どうしようもない設計になっているので、要望段階から設計をやり直すのがいいでしょう。なぜテンポラリテーブルを使用する必要があるのか、本当にテンポラリテーブルでなければならないのか、etc... 場合によって、Webアプリケーションの仕様上、要望を満足できないこともあります。その場合、その要望を曲げることを、顧客に納得して頂く必要があります。

_________________
中博俊
ベテラン
会議室デビュー日: 2004/10/17
投稿数: 91
お住まい・勤務地: 大阪市
投稿日時: 2005-02-23 19:54
あんまり我々の助言に耳を傾けずに、自分の意見だけを押し付けてくるのでお好きにどうぞって思っちゃうんですが、

>ちなみに、セッション終了イベントが、「どんな場合でも、必ず発生する」とは思わないでください。発生しない状況もあります。

だけじゃなくって、Windows Server 2003だったら、途中でアプリケーションプールが再起動しちゃったりするんだけど、そんなこと当然意識して無いんだろーなー。
Safe_WaY
会議室デビュー日: 2004/09/28
投稿数: 18
投稿日時: 2005-02-23 20:09
中博俊 様や
Jitta 様の
助言どおり 設計をみなおします。

DBを操作する際に 毎回 接続、切断を行うように
作り直そうと思います。

返事が遅くなりすいませんでした。
Safe_WaY
会議室デビュー日: 2004/09/28
投稿数: 18
投稿日時: 2005-02-23 20:13
中博俊 様や
Jitta 様

ありがとうございます。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-02-24 20:29
Safe_WaYさん>
引用:

あんまり我々の助言に耳を傾けずに、自分の意見だけを押し付けてくる


 言われる側にとっては耳の痛い言葉ですが、なんの理由も無しに「やめておけ」というわけではありません。対象技術の元になっている技術やそれらの仕様、自分の経験を元に「やめておけ」と言うのです。
 今目の前にしている問題もそうですが、問題の表面だけ、言われていることの言葉だけを見ず、問題の原因、言葉の元になっている経験や知識を探る努力をしてください。努力したことは自分の中に知識としてたまります。努力して得た知識は、知恵の元になります。知恵は様々な問題の解決策を生み出します。努力のない知識は、すぐに忘れます。

_________________

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