共有サーバー・アーキテクチャによって、データベース・サーバーでは、多数のユーザー・プロセスで非常に少数のサーバー・プロセスを共有でき、サポート可能なユーザー数が増大します。共有サーバー・アーキテクチャにより、多数のユーザー・プロセスがディスパッチャに接続されます。ディスパッチャは、複数の着信ネットワーク・セッション要求を共通キューに送ります。サーバー・プロセスの共有プールの中のアイドル状態の共有サーバー・プロセスは、共通キューから要求を取り出します。つまり、サーバー・プロセスの小規模プールによる多数のクライアントの処理が可能になります。ディスパッチャはサーバー・プロセスを減らします。これは、システムが過負荷の場合やシステムのメモリーが限られている場合に役に立ちます。
この章の内容は、次のとおりです。
関連項目: 共有サーバー構成の詳細は、『Oracle Database管理者ガイド』を参照してください。 |
ディスパッチャ、バーチャル・サーキットおよび共有サーバーの共有メモリー・リソースをあらかじめ設定することによって、実行時に共有サーバーを使用可能にします。データベース管理者は、SQL ALTER SYSTEM
文を使用することによって、ディスパッチャと共有サーバーを起動でき、インスタンスを再起動する必要がありません。共有サーバー・モードをオンにしたが、ディスパッチャ・パラメータが設定されていない場合、ディスパッチャはTCP/IPプロトコルで自動的に起動されます。ディスパッチャのデフォルト構成は、データベース初期化パラメータ・ファイルの次のDISPATCHERS
パラメータ設定と同じです。
dispatchers="(PROTOCOL=tcp)"
クライアントの負荷がメモリーやその他のシステム・リソースに無理を生じさせる構成の場合は、データベース管理者は、共有サーバー・リソースを起動してこの負荷の問題を解消できます。
構成を確認し、ディスパッチャを監視するには、次のビューを使用します。
V$QUEUE
: このビューは共有サーバーのメッセージ・キューに関する情報を提供します。このビューを利用できるのは、SYS
ユーザー、およびSYSTEM
などのSELECT ANY TABLE
システム権限を持つユーザーのみです。
V$DISPATCHER
: このビューは、名前、ネットワーク・アドレス、ステータス、各種利用状況統計および索引番号など、ディスパッチャ・プロセスに関する情報を提供します。
V$DISPATCHER_CONFIG
: このビューはディスパッチャに関する構成情報を提供します。
V$DISPATCHER_RATE
: このビューはディスパッチャ・プロセスの速度統計を提供します。
関連項目: これらのビューの詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』および『Oracle Databaseリファレンス』を参照してください。 |
次の状態の場合に、DISPATCHERS
パラメータを構成します。
TCP/IP以外のプロトコルを構成する必要がある場合
多重化など、1つ以上のオプションのディスパッチャ属性を構成する必要がある場合
DISPATCHERS
パラメータの次の属性を指定できます。PROTOCOL
属性は必須であり、その他はオプションです。ADDRESS
属性は、ファイアウォールを使用するときなど、ポート番号を指定する場合に必要です。
SQL文のALTER SYSTEM
またはDatabase Configuration Assistantを使用して、ディスパッチャ構成を変更します。このパラメータの設定後は、インスタンスを再起動する必要はありません。
関連項目:
|
Oracle Databaseは複数のサービス名で表すことができます。このため、ディスパッチャ・プールを特定のサービスを要求するクライアントに排他的に割り当てることができます。これによりミッション・クリティカル要求に対してはより多くのリソースが割り当てられ、実質的にその要求の優先順位が高くなります。
たとえば、次の初期化パラメータ・ファイルの例には2つのディスパッチャがあります。最初のディスパッチャは、sales.us.example.com
を要求するクライアントの要求を処理します。もう一方のディスパッチャは、adminsales.us.example.com
を要求するクライアントの要求のみを処理します。
SERVICE_NAMES=sales.us.example.com INSTANCE_NAME=sales DISPATCHERS="(PROTOCOL=tcp)" DISPATCHERS="(PROTOCOL=tcp)(SERVICE=adminsales.us.example.com)"
接続プーリングは、ディスパッチャへの物理ネットワーク接続数を削減することのできるリソース利用機能です。これは、クライアント・プロセス間で接続を共有またはプールすることにより実現されます。
接続プーリングを構成するには、初期化パラメータ・ファイルのDISPATCHERS
パラメータにPOOL
属性および次に示すオプション属性を設定します。
ディスパッチャ・プロセス当たり200件の接続をサポートでき、次の構成を持つシステムを想定します。
TCP/IP経由で2,500ユーザーが同時に接続できる
SSL付きTCP/IP経由で1,000セッションが同時に接続できる
ディスパッチャの数を判定するには、次の式を使用します。
CEIL ( maximum concurrent sessions / connections for each dispatcher )
次のように、TCP/IP用のDISPATCHERS
属性には最低で13ディスパッチャを、SSL付きTCP/IP用には最低で5ディスパッチャを設定する必要があります。
DISPATCHERS="(PROTOCOL=tcp)(DISPATCHERS=13)" DISPATCHERS="(PROTOCOL=tcps)(DISPATCHERS=5)"
接続プーリングを実装して、ディスパッチャの数を減らすことができます。接続プーリングを使用すると、各ディスパッチャはより多くのセッションを処理できます。たとえば、クライアントがほとんどの時間アイドル状態であり、1台のディスパッチャが2,500件のTCP/IPセッションまたは1,000件のSSL付きTCP/IPセッションに対して要求と応答をルーティングできるとします。この構成では、プロトコル当たりに必要なディスパッチャ数が削減されるため、ディスパッチャをより完全に使用できるようになります。
DISPATCHERS="(PROTOCOL=tcp)(DISPATCHERS=2)(POOL=on)(TICK=1) (CONNECTIONS=200)(SESSIONS=2500)" DISPATCHERS="(PROTOCOL=tcps)(DISPATCHERS=1)(POOL=on)(TICK=1) (CONNECTIONS=200)(SESSIONS=1000)"
前述の例では、DISPATCHERS
のデフォルトが1であるため、DISPATCHERS
属性をSSL付きTCP/IPセッション用に指定する必要がありません。CONNECTIONS
のデフォルトは、プロセス当たりの最大接続数です。これは、オペレーティング・システムによって異なります。
Oracle Connection Managerで使用可能なセッションの多重化によって、複数のクライアント・セッションを単一のプロトコル接続を経由して集中化できます。たとえば、Oracle Connection Managerを経由した1つの接続で、複数のユーザー・プロセスを1つのディスパッチャに接続できます。
Oracle Connection Managerでは、共有接続によってユーザーによるディスパッチャへの通信を可能にします。ある特定の時間には、Connection Managerプロセス経由でディスパッチャにリンクしている他のユーザー・プロセスがアイドル状態の間に、ユーザーは接続を必要とすることがあります。セッションの多重化は、ディスパッチャ・プロセス接続の使用を最大限にすることができるという利点があります。
また、セッションの多重化はディスパッチャ間のデータベース・リンク・セッションにも役立ちます。各ディスパッチャのセッション数の制限は、オペレーティング・システムによって異なります。
セッションの多重化を有効にするには、DISPATCHERS
パラメータのMULTIPLEX
属性をon
またはそれと同等の値に設定します。
DISPATCHERS="(PROTOCOL=tcp)(MULTIPLEX=on)"
共有サーバーがサーバー側で構成されていて、ディスパッチャが登録されていない場合にクライアント接続要求が到着すると、その要求は専用サーバー・プロセスによって処理されます。特定のクライアントが常にディスパッチャを使用する必要がある場合は、接続記述子のCONNECT_DATA
セクションに(
SERVER
=shared)
を構成します。たとえば、次のように指定します。
sales=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.example.com)
(SERVER=shared)))
(SERVER=shared)
属性が構成されているときにディスパッチャを利用できない場合、クライアントの接続要求は拒否され、クライアントにメッセージが送信されます。
データベースが共有サーバーとして構成されていて、特定のクライアントに専用サーバーが必要な場合、そのクライアントが専用サーバーを使用するように構成できます。それには次の方法があります。
CONNECT_DATA
の部分で接続記述子に(
SERVER
=dedicated)
と設定することによって、ネット・サービス名を構成できます。たとえば、次のように指定します。
sales=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.example.com)
(SERVER=dedicated)))
クライアント・プロファイル・ファイルsqlnet.ora
にUSE_DEDICATED_SERVER=on
と指定します。これにより、クライアントが使用する接続記述子のCONNECT_DATA
セクションに(SERVER=dedicated)
が追加されます。
注意: USE_DEDICATED_SERVER がON に設定されると、接続記述子の既存の(SERVER= value ) エントリが(SERVER=dedicated) で上書きされます。 |
関連項目:
|