この章では、ディスパッチャの構成方法について説明します。
共有サーバー・アーキテクチャによって、データベース・サーバーでは、多数のユーザー・プロセスで非常に少数のサーバー・プロセスを共有でき、サポート可能なユーザー数が増大します。共有サーバーにより、多数のユーザー・プロセスがディスパッチャに接続されます。ディスパッチャは、複数の着信ネットワーク・セッション要求を共通キューに送ります。サーバー・プロセスの共有プールの中のアイドル状態の共有サーバー・プロセスは、共通キューから要求を取り出します。つまり、サーバー・プロセスの小規模プールによる多数のクライアントの処理が可能になります。
この章の内容は、次のとおりです。
ディスパッチャ、バーチャル・サーキットおよび共有サーバーの共有メモリー・リソースをあらかじめ設定することによって、実行時に共有サーバーを使用可能にします。データベース管理者は、SQL ALTER SYSTEM
文を使用することによって、ディスパッチャと共有サーバーを起動でき、共有サーバーを起動するためにインスタンスを再起動する必要がありません。共有サーバー・モードをオンにしたが、ディスパッチャ・パラメータが設定されていない場合、ディスパッチャはTCP/IPプロトコルで自動的に起動されます。ディスパッチャのデフォルト構成は、データベース初期化パラメータ・ファイルの次のDISPATCHERS
パラメータ設定と同じです。
dispatchers="(PROTOCOL=tcp)"
クライアントの負荷がメモリーやその他のシステム・リソースに無理を生じさせる構成の場合は、データベース管理者は、共有サーバー・リソースを起動してこの負荷の問題を解消できます。
次の状態の場合に、DISPATCHERS
パラメータを構成します。
TCP/IP以外のプロトコルを構成する必要がある場合
次のいずれかの属性のプロトコル・アドレスを構成します。
ADDRESS(ADDまたはADDR)
DESCRIPTION(DESまたはDESC)
PROTOCOL(PROまたはPROT)
次のオプションのディスパッチャ属性の1つまたはそれ以上を構成する必要がある場合
このパラメータの設定後は、インスタンスを再起動する必要はありません。SQL文のALTER SYSTEM
を使用することによって、ディスパッチャ構成を変更できます。
接続プーリングは、ディスパッチャへの物理ネットワーク接続数を削減することのできるリソース利用機能です。これは、クライアント・プロセス間で接続を共有またはプールすることにより実現されます。
接続プーリングを構成するには、初期化パラメータ・ファイルのDISPATCHERS
パラメータにPOOL
属性および次に示すオプション属性を設定します。
プロセス当たり950件の接続をサポートでき、次の構成を持つシステムを想定します。
TCP/IP経由で4,000ユーザーが同時に接続できる
SSL付きTCP/IP経由で2,500セッションが同時に接続できる
この場合、TCP/IPのDISPATCHERS
属性には5つ以上のディスパッチャを、SSL付きTCP/IPのDISPATCHERS
属性には3つのディスパッチャを設定する必要があります。
DISPATCHERS="(PROTOCOL=tcp)(DISPATCHERS=5)" DISPATCHERS="(PROTOCOL=tcps)(DISPATCHERS=3)"
各ディスパッチャは、接続プーリングを使用することにより、950以上のセッションを処理できます。たとえば、クライアントがほとんどの時間アイドル状態であり、1台のディスパッチャが4,000件のTCP/IPセッションまたは2,500件のSSL付きTCP/IPセッションに対して要求と応答をルーティングできるとします。この構成では、必要なディスパッチャ数が1プロトコル当たり1つに削減されるため、ディスパッチャをより完全に使用できるようになります。
DISPATCHERS="(PROTOCOL=tcp)(DISPATCHERS=1)(POOL=on)(TICK=1) (CONNECTIONS=950)(SESSIONS=4000)" DISPATCHERS="(PROTOCOL=tcps)(DISPATCHERS=1)(POOL=on)(TICK=1) (CONNECTIONS=950)(SESSIONS=2500)"
DISPATCHERS
およびCONNECTIONS
属性を指定する必要はありません。理由は、DISPATCHERS
のデフォルトが1に、CONNECTIONS
のデフォルトがオペレーティング・システムに応じて1プロセス当たりの最大接続数に設定されるためです。
Oracle Connection Managerで使用可能なセッションの多重化によって、複数のクライアント・セッションを単一のプロトコル接続を経由して集中化できます。たとえば、Oracle Connection Managerを経由した1つの接続で、複数のユーザー・プロセスを1つのディスパッチャに接続できます。
Oracle Connection Managerでは、共有接続によってユーザーからディスパッチャへ通信できます。ある特定の時間には、接続を必要とするユーザーがゼロ、1ユーザー、または複数ユーザーのこともあり、その時点でConnection Managerプロセス経由でディスパッチャにリンクしている他のユーザー・プロセスがアイドル状態のこともあります。このように、セッションを多重化することによって、ディスパッチャ・プロセス接続の使用を最大限にすることができるという利点があります。
また、セッションの多重化によって、ディスパッチャ間のデータベース・リンク・セッションを多重化するためにも有効です。各ディスパッチャのセッション数の制限は、オペレーティング・システムによって異なります。
セッションの多重化を有効にするには、DISPATCHERS
パラメータのMULTIPLEX
属性をon(またはそれと同等の値)に設定します。
DISPATCHERS="(PROTOCOL=tcp)(MULTIPLEX=on)"
Oracleデータベースは複数のサービス名で表すことができます。このため、ディスパッチャ・プールを特定のサービスを要求するクライアントに排他的に割り当てることができます。これによりミッション・クリティカル要求に対してはより多くのリソースが割り当てられ、実質的にその要求の優先順位が高くなります。
たとえば、次の初期化パラメータ・ファイルの例では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)"
共有サーバーが構成されていて、ディスパッチャが登録されていない場合にクライアント接続要求が到着すると、その要求は専用サーバー・プロセスによって処理されます。特定のクライアントが常にディスパッチャを使用する必要がある場合は、接続記述子のCONNECT_DATA
セクションに(
server
=shared)
を構成します。たとえば、次のように指定します。
sales=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.example.com)
(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) で上書きされます。 |
関連項目:
|
データベース常駐接続プーリングがサーバーで有効になっている場合、pooled
の値を使用してプールから接続を取得します。