プライマリ・コンテンツに移動
Oracle® Database Net Services管理者ガイド
11gリリース2 (11.2)
B56288-05
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

11 ディスパッチャの構成

共有サーバー・アーキテクチャによって、データベース・サーバーでは、多数のユーザー・プロセスで非常に少数のサーバー・プロセスを共有でき、サポート可能なユーザー数が増大します。共有サーバー・アーキテクチャにより、多数のユーザー・プロセスがディスパッチャに接続されます。ディスパッチャは、複数の着信ネットワーク・セッション要求を共通キューに送ります。サーバー・プロセスの共有プールの中のアイドル状態の共有サーバー・プロセスは、共通キューから要求を取り出します。つまり、サーバー・プロセスの小規模プールによる多数のクライアントの処理が可能になります。ディスパッチャはサーバー・プロセスを減らします。これは、システムが過負荷の場合やシステムのメモリーが限られている場合に役に立ちます。

この章の内容は、次のとおりです。


関連項目:

共有サーバー構成の詳細は、『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属性は、ファイアウォールを使用するときなど、ポート番号を指定する場合に必要です。

  • ADDRESS

  • CONNECTIONS

  • DESCRIPTION

  • DISPATCHERS

  • LISTENER

  • MULTIPLEX

  • POOL

  • PROTOCOL

  • SERVICE

  • SESSIONS

  • TICKS

SQL文のALTER SYSTEMまたはDatabase Configuration Assistantを使用して、ディスパッチャ構成を変更します。このパラメータの設定後は、インスタンスを再起動する必要はありません。


関連項目:

  • 共有サーバー構成の詳細は、『Oracle Database管理者ガイド』を参照してください。

  • DISPATCHERSパラメータ構成およびサポートされる属性の詳細は、『Oracle Databaseリファレンス』を参照してください。

  • ALTER SYSTEM文の詳細は、『Oracle Database SQLリファレンス』を参照してください。


ディスパッチャ単位のグループ化

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属性および次に示すオプション属性を設定します。

  • CONNECTIONS

  • SESSIONS

  • TICKS

ディスパッチャ・プロセス当たり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.oraUSE_DEDICATED_SERVER=onと指定します。これにより、クライアントが使用する接続記述子のCONNECT_DATAセクションに(SERVER=dedicated)が追加されます。


    注意:

    USE_DEDICATED_SERVERONに設定されると、接続記述子の既存の(SERVER=value)エントリが(SERVER=dedicated)で上書きされます。


関連項目:

  • SERVERパラメータの設定方法は、「拡張接続データ・パラメータの構成」を参照してください。

  • USE_DEDICATED_SERVERパラメータの設定方法は、「プロセスへの接続要求のルーティング」を参照してください。

  • データベース常駐接続プーリングの有効化と構成の詳細は、『Oracle Call Interfaceプログラマーズ・ガイド』および『Oracle Database管理者ガイド』を参照してください。