web-dev-qa-db-ja.com

Windowsサーバーで実行されているOracleのデータベース接続の一般的な最大数はいくつですか?

多数のクライアントにサービスを提供するデータベースサーバーを維持しています。各クライアントは通常、いくつかのクライアントアプリケーションを実行しています。データベースサーバー(Oracle 9i)への接続の総数がピーク負荷時に800接続に達しています。 Windows 2003サーバーがメモリ不足になり始めています。より大きなメモリ容量を得るために、現在64ビットWindowsへの移行を計画しています。開発者として、接続プーリングを備えた多層アーキテクチャに移行することをお勧めします。これは、この問題の自然な解決策であると私は信じています。ただし、私のアイデアをサポートするために、次の情報が必要です。

  1. oracleデータベースに許可される一般的な接続数
  2. 接続数が多すぎる場合の問題は何ですか?メモリ消費が多すぎますか?または開いているソケットが多すぎますか?またはスレッド間のコンテキスト切り替えが多すぎますか?
  3. 少し具体的に言えば、この問題に直面せずにOracle Formsアプリケーションを数千のユーザーに拡張するにはどうすればよいでしょうか。 Oracle RACはこのケースに適用されますか?

この質問への答えは、使用されているハードウェアの正確な仕様など、かなりの数の要因に依存するはずです。おおよその見積もりまたは実際の経験を期待しています。

5
Sake

データベース接続を処理するには、別のOracleプロセスが必要で、最大2 MBのメモリが必要になる場合があります。通常、Oracleのインストールでは、使用可能なメモリとCPU構成に基づいて、同時接続の数が制限されます。

たとえば、データベースに50の顧客アカウントがあり、アカウントごとに最大100の同時接続があるとします。平均ですべてのアカウントが25%= 25接続のみを使用する場合、平均の総数は1250接続になります。つまり、接続固有のデータを保存するためだけに2500 MBが必要です。コンテキストの切り替えに必要なプロセッサ時間もあります。

同時接続に制限を設定することで、トランザクションが確実に通過し、非常にアクティブな顧客アカウントがデータベースサーバーのリソースをブロックし始めないようにすることができます。接続数は、セッションパラメータとライセンスによって制限されます。 sessionsパラメータは、Oracleバックグラウンドプロセスを含む接続の総数を制御します。

64ビットのWindowsプラットフォームを使用してサーバーにさらにRAMを追加することをお勧めします。16GBのメモリを追加するだけで、多くの時間を費やす必要がないためです。

現実的なワークロードシナリオで構成がどのように実行されるかの詳細については、 Oracle E-Business Suite標準ベンチマーク を参照してください。通常、それらには多数の接続があります。

7
splattne

Windows上のOracleは、プロセスではなくユーザースレッドを開きます。 (これは、ユーザー接続がクラッシュする場合は、すべてを伴うため、適切ではありません。)

つまり、メモリによって制限されます。ユーザーあたりのスレッドおよびPGAのセッションオーバーヘッドの数MBと、実行していることに依存するコンテキストとSGA軽い作業(==ユーザーが同じ単純なクエリを繰り返し実行する)の場合は、セッションをカウントするだけで済みます。

0
slovon