• ベストアンサー

Oracle10gで同時接続数について

VB.NET + Oracle10gの開発(Windowsアプリ)にて Oracleへのクライアントの同時接続数が500あるのですが、 この環境の場合、APサーバーをたてるなどして、ハード的な階層を分ける必要があるのでしょうか? (APサーバーをたてる必要があるのでしょうか?) そもそも、500という数が、一般的に見て、多いのか、少ないのかも分かりませんが、各クライアントPCから直接接続するような仕組みでは、まずいのでしょうか?(通常のC/Sのように・・・) ご回答、よろしくお願い致します。

  • pnir
  • お礼率55% (5/9)
  • Oracle
  • 回答数3
  • ありがとう数6

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

  • ベストアンサー
  • syama2006
  • ベストアンサー率38% (14/36)
回答No.3

 2階層のC/Sシステムは経験がありませんので詳しくないのですが、クライアントから直接APサーバーのDBコネクションプールは使えないと思います。  APサーバーを立てると3階層のC/Sシステムとなり、クライアントはビュー、APサーバーはロジック、DBサーバーはデータベースの機能分担になります。クライアントとAPサーバー間は、.NET Remotingなどでの通信となります。  2階層システムか3階層システムとするかは重大な決断になります。書籍の購入やコンサルの利用をお勧めします。  私の手元には次の書籍があります。  ・発行:日経SBソフトプレス  ・Microsoft .NETによるエンタープライズソリューションパターン  システム規模(クライアント数、トランザクション数)が判断するための重要なキーになります。  多くの人が使う場合は、VB.NETでの開発よりもWebシステムの方がシステム構成や開発方法の柔軟性が高いように思えます。

pnir
質問者

お礼

ご回答ありがとうございます! やはり、APサーバーを立てると、コンポーネント間での通信が必要になりますか。 私も個人的にAPサーバーを立てた3階層のC/Sシステムを調べてみたのですが、2階層の仕組みと比べて、パフォーマンスが落ちるといったような内容(オーバーヘッドが生じるため・・・)をいくつも目にしたものですから、安易に踏み切れない部分がありまして・・・ とくに、「XML Webサービス」は、パフォーマンスが低いと認識しています。やはり、ファイアーウォールを経由しないような、イントラ内のシステムでは、「.NET Remoting」を使用していますか? > 私の手元には次の書籍があります。 > ・発行:日経SBソフトプレス > ・Microsoft .NETによるエンタープライズソリューションパターン ご紹介ありがとうございます。参考にしてみます。 よろしくお願いします。

その他の回答 (2)

  • syama2006
  • ベストアンサー率38% (14/36)
回答No.2

 APサーバーでコネクションをプールすればコネクション数をクライアント数よりも低減できます。  コネクションプール数がDBへの接続数となり、コネクションプールの上限を決めることでDBサーバーのメモリ量を決定できます。  「Oracle上に接続セッションの数が500ある」という状態は、接続されていることを意味しメモリを必要とします。  300同時接続のシステムでは数台のAPサーバーを立てました。システム起動時に業務アプリ実行用のプロセスを立ち上げ、各プロセス毎にDBコネクションを確立する手法を採っております。  新たなコネクションを確立する処理は非常に重いためこのように事前に確立するようにしております。  なお、複数台のAPサーバーを立てる場合は負荷分散機能やダウン切替なども考慮する必要が出てきます。  業務の重要度と開発費用を考慮して、システム設計を決めることが重要です。

pnir
質問者

お礼

ご回答ありがとうございます。 APサーバーをたてるということは、ハード的なアーキテクチャのみならず、アプリケーション自体も通常のC/Sのアプリとは、違った仕組みを採用する必要があるということになりますか? APサーバーをたててのシステム構築の経験がないので、よくわからないのですが、いわゆる、「n階層アプリケーション」のような、クライアントアプリから、リモートでオブジェクト同士をやりとりさせるような技術(XMLWebサービス、.NET Remoting等)が必要になるのでしょうか? 素人の質問になってしまいますが、そもそも、APサーバーを立てる場合のシステム構成では、クライアントから直接Oracleへ接続するようなつくりは、実現できないのでしょうか? ご回答、よろしくお願いします。

  • syama2006
  • ベストアンサー率38% (14/36)
回答No.1

 Oracleの同時接続数500は非常に大きな接続数です。DBサーバーに大量のメモリを必要とします。500同時接続した場合のメモリ量をOracle社に問い合わせるのが良いと思います。  私は100TPSとかなり大きなシステムを設計して来ましたが、オンラインで300同時接続数が最大でした。これで数億円もする高価なシステムになりました。 システム設計では次のデータをまず必要とします。 ・利用するクライアント数 ・1秒間当たりの最大トランザクション数(クライアント数から算出) ・DBデータの競合する程度 ・開発する業務アプリの量 ・ハードを含めたシステム開発費用  また、開発効率を向上するために各種のフレームワークが公開されておりますので、気に入った物を選ぶのが良いと思います。VB.NETを対象としたフレームワークはあまり見かけませんが、Javaは多く出ております。  システム規模の拡大に対応するにはAPサーバーを立てたシステムとなります。

pnir
質問者

お礼

さっそくのご回答、ありがとうございます! やはり、同時接続500というのは、非常に大きい数ですか。。 さらに質問という形になってしまいますが、 同時接続という形ではなく、Oracle上に接続セッションの数が500あるという状態でも、同じようなことがいえるのでしょうか? つまり、クライアントからのコネクションが各クライアント上で、プールされているような状態です。 (個人的には、APサーバーを立てることによって、クライアントから直接接続するよりも、このコネクションプールの数、および、Oracle上の接続セッションをおさえることができると認識しているので・・・) ちなみに、syama2006さんは、300同時接続数のシステム構築の際には、APサーバーは、たてましたか? よろしくお願いします。

関連するQ&A

  • Visual Basic6.0でOracle9iに接続する方法

    Visual Basic6.0でOracle9iに接続する方法を教えてください。 状況としてはVB6.0をインストールしました。 Oracle9iをインストールしました。 ある業務の開発ソースはもらっています。 その他iniファイルももらっています。 なので必要な情報はあるはずです。 しかし、そもそもVBとOracleの接続方法がわかりません。 どなたか知っている方お願いします。 また、ヒントが得られるサイトがありましたら教えてください。

  • Oracle8iから9iへ移行後、接続できない

    環境:Oracle9i 2.0 VB :VB6 件名の通りです。Oracle9iクライアントにバージョンアップしました。 その後、既に作成されているプログラムを開いて実行しようとするとエラーになります。 原因はOracle InProc Server 4.0 Type Libralyが参照不可になっていました。 別のPCにはOracle9i管理者版をインストールしたのですが、こちらは問題なく動作します。 Oracle9i管理者とクライアントによってVB6の動作に違いがあるのでしょうか? ちなみにOracle9i管理者版でOracle InProc Server 4.0 Type Libralyを参照しているファイルはoip9.tlbでしたのでoip9.dllの2つのファイルをクライアント版のPCに登録したのですが、それでも動作しませんでした。 原因がわからず困っています。どなたかアドバイスお願い致します。

  • VB2005からOracle10gへの接続

    いつもご参考にさせて頂いております。 今年からVB2005(VIsual Basic)を勉強しています。 データベース接続なんですが、Accessでの接続は上手くいきましたが、 Oracle10gがどうしても接続できません。 根本的に間違えているのかもしれないですが...。 どなたかOracle10gへの接続方法を教えて頂けませんでしょうか? また接続には色々種類があるみたいですが、どれがどの様なときに適切なのかも教えて頂ければ、とても助かります。 ご教授宜しくお願い致します。

  • oracleクライアント9.2.0.1とoracleサーバ10gで動きますでしょうか?

    Windows 2003 server上でoracle10gを動かす予定です。 それに接続するためのoracleクライアントは9.2.0.1でも動くのでしょうか? oracleの公式的には9.2.0.4以上でないと動作保障はしない、ということはわかりました。が、実際に動くかどうかを知りたいと思っています。 上記のような環境で動かしたことがある、または実際に運用しているというような事例がございましたら教えていただきたく思います。

  • VS2005アプリケーションで、Oracleデータを参照したい

    WebサーバーにWindowsアプリケーションを作成して、配布しましたが 個々のユーザー(クライアント)がそのアプリケーションをインストールしたときに、 Oracleクライアントがないために、エラーになります。 初心者で申し訳ないののですが、VS2005でWindowsアプリケーションを 開発して、Webサーバに配布したときのOracle接続はどのようにすれば、 Oracleクライアントなしのユーザーの端末で実行できるのでしょうか? どうか、教えてください。

  • 接続型と非接続型ではどちらが良いか

    お世話になります。 社内で使うシステムを開発しています。 最近、やっと開発ツールをVB6からVB2005へ移行しました。 そこで質問ですが、データベースへの接続で、「接続型」と「非接続型」ではどちらが処理がスムーズなのでしょうか。 環境はクライアントがXP、サーバーはWindows2003Server、データベースはSqlServer2000。 各営業所間はVPNで結ばれています。クライアントの数は30位です。 今まで開発して使用しているシステムはVB6で作られたものなので、システムの起動と同時にデータベースに接続し、終了時に切断する「接続型」です。 せっかくADO.NETに移行するのだから、「非接続型」にしようかと思いますが、WEBを使用するわけでもないので、処理が早い方を使おうと思います。 よろしくお願いいたします。

  • oracle8iサーバに対して、windows7、oracle10gク

    oracle8iサーバに対して、windows7、oracle10gクライアントで接続は可能でしょうか?

  • 同時接続数

    ファイルサーバに同時アクセスするクライアントが5台の場合、Windows Serverであれば5ユーザCAL付属なので問題有りませんが、それ以上のクライアントが同時接続する場合は別途ユーザCALの購入が必要です。 その中で、2003 Serverダウングレードモデルの場合でも2008用のユーザCALで問題はありませんか?

  • oracle10gサーバに対しoracle9iのクライアントインストー

    oracle10gサーバに対しoracle9iのクライアントインストールしてsql plusで接続確認するとTNS操作タイムアウトが発生します。既にインストールされているoracle9iのクライアントからは問題なく接続できます。ファイアウオールの設定は同じです。やはりoracle10gをインストールしないとだめなのでしょうか。

  • Oracle10のソートについて

    お世話になります。 今までXP-ORACLE9-VB6で開発していたプログラムを VISTA-ORACLE10-VB6に移植して使用するのですが、 ORDER BYがない場合の抽出が異なっているようなんですが、 ORACLE9と同じように抽出するには、 ORDER BY をつけるしかないのでしょうか。 プログラムの本数がかなりあるので何かいい方法があれば ご教授頂きたくよろしくお願いします。