• ベストアンサー

セッション復活の方法

VB6.0アプリからOracleデータベースにアクセスして データの取得・更新を行うシステムを構築しています。 (2層C/Sシステムっていうんでしょうか?) 今、このシステムにおけるデータの取得・更新を 起動~終了の1セッション内で行っています。 将来的にユーザ数が増え、セッション数が増加すると このような1セッションの作りではパフォーマンスが低下してしまうということを聞きました。 そこで、必要な時だけセッションを張り、 必要の無い時はセッションを切った状態にすることが要望されていますが これを行うとセッションを張る時のオーバーヘッドがかかって遅くなります。 そこで、CreateDatabasePoolメソッドをGetDatabaseFromPoolメソッドや用いて、 セッションの瞬時復帰を行い、上記のオーバーヘッドをなくすことを思いついたのですが、 調べると私の構築しているようなシステムではできないようなのです。 Webアプリならできるようですが。。 私の構築しているようなシステムにおいて セッション即時復帰の方法、 または、CreateDatabasePool、GetDatabaseFromPoolの使用法 をご教授ください。 宜しくお願いします。 言葉足らずな説明ご容赦ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • GoF
  • ベストアンサー率37% (34/91)
回答No.2

バージョンとエディションの表記がされてないので回答に困るのですが、 コネクションマネージャを使用する方法があります。 ユーザプロセス - コネクションマネージャ - リスナ の3層構成になり、コネクションプール、セッションの多重化がサポートされているようです。 (エンタープライズ版の機能です。) 但し、ゾンビセッションのロックで苦労したという噂話を聞いているので使用したことはありません。 ちなみ、Unix系の専用サーバはプロセスモデルですので、接続操作にはかなりコストがかかります。 スレッドモデルのWindowsでは、およそ 10 ~20 接続であれば MTS にしなくても大丈夫だと思います。 (使用環境により異なりますので DBAと相談されてください) あとアプリケーションレベルで実装されるのは避けたほうがよいと思います。

yokothin
質問者

お礼

遅くなって申し訳ありません。 回答ありがとうございます。 Oracleのバージョンは9.2です。 書き忘れました。すみません。 コネクションマネージャですか~ そういうツールがあるんですね。なるほど。 前の質問者の方のアドバイスと合わせ DBAと相談してみます。

その他の回答 (1)

回答No.1

セッション数が負担になるようならば、共有サーバ接続を行うようにすれば、 セッションの増加による不可は軽減できます。 また、セッション開設時のオーバーヘッドですが、認証の問題さえ何とかすれば さほど長い時間がかかることはないと思います。 (windowsサーバで設定が良くないと、時間がかかるけど、設定さえ見直せば、 コンマ数秒でセッション開設も不可能ではありません。)

yokothin
質問者

お礼

遅くなって申し訳ありません。 回答ありがとうございます。 サーバ側設定でオーバヘッド回避ですねぇ。 なるほど、なるほど。試してみます。 ちょっとまだ忙しくて試せてません。。。泣

関連するQ&A