11 共有サーバー・アーキテクチャの構成

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

関連項目:

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

11.1 ディスパッチャについて

ディスパッチャ、バーチャル・サーキットおよび共有サーバーの共有メモリー・リソースをあらかじめ設定することによって、実行時に共有サーバーを使用可能にします。データベース管理者は、SQL ALTER SYSTEM文を使用することによって、ディスパッチャと共有サーバーを起動でき、インスタンスを再起動する必要がありません。共有サーバー・モードをオンにすると、DISPATCHERSパラメータが設定されていない場合でも、ディスパッチャはTCP/IPプロトコルで自動的に起動されます。共有サーバーの使用方法は、データベース初期化パラメータ・ファイルの次のDISPATCHERSパラメータの設定と同じです。

DISPATCHERS="(PROTOCOL=tcp)"

次の状態の場合に、DISPATCHERSパラメータを直接構成します。

  • TCP/IP以外のプロトコルを構成する必要がある場合。

  • 多重化など、1つ以上のオプションのディスパッチャ属性を構成する必要がある場合

DISPATCHERSパラメータの次の属性を指定できます。PROTOCOL属性は必須であり、その他はオプションです。ADDRESS属性は、ファイアウォールを使用するときなど、ポート番号を指定する場合に使用されます。

  • ADDRESS

  • CONNECTIONS

  • DESCRIPTION

  • DISPATCHERS

  • LISTENER

  • MULTIPLEX

  • PROTOCOL(必須)

  • SERVICE

  • SESSIONS

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

関連項目:

ディスパッチャの構成の詳細は、『Oracle Database管理者ガイド』を参照してください。

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

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)" 

ノート:

プラガブル・データベースのサービスは、手動で開始する必要があります。

11.1.2 ディスパッチャの監視

構成を確認し、ディスパッチャを監視するには、次のビューを使用します。

  • V$QUEUE: 共有サーバー・メッセージ・キューの情報を示します。このビューを利用できるのは、SYSユーザー、およびSYSTEMなどのSELECT ANY TABLEシステム権限を持つユーザーのみです。

  • V$DISPATCHER: 名前、ネットワーク・アドレス、ステータス、各種利用状況統計および索引番号など、ディスパッチャ・プロセスに関する情報を提供します。

  • V$DISPATCHER_CONFIG: ディスパッチャに関する構成情報を提供します。

  • V$DISPATCHER_RATE: ディスパッチャ・プロセスの速度統計を提供します。

関連項目:

11.2 セッション多重化の有効化

Oracle Connection Managerで使用可能なセッションの多重化によって、複数のクライアント・セッションを単一のプロトコル接続を経由して集中化できます。たとえば、Oracle Connection Managerを経由した1つの接続で、複数のクライアント・プロセスを1つのディスパッチャに接続できます。

Oracle Connection Managerでは、共有接続によってユーザーによるディスパッチャへの通信を可能にします。ある特定の時間には、Connection Managerプロセス経由でディスパッチャにリンクしている他のクライアント・プロセスがアイドル状態の間に、ユーザーは接続を必要とすることがあります。ディスパッチャ・プロセスが最大限に使用されるため、セッションの多重化は有効です。

また、セッションの多重化はディスパッチャ間のデータベース・リンク・セッションにも役立ちます。各ディスパッチャのセッション数の制限は、オペレーティング・システムによって異なります。

セッションの多重化を有効にするには、DISPATCHERSパラメータのMULTIPLEX属性をonまたはそれと同等の値に設定します。

DISPATCHERS="(PROTOCOL=tcp)(MULTIPLEX=on)"

関連項目:

構成の詳細は、「Oracle Connection Managerのセッションの多重化の有効化」を参照してください

11.3 共有サーバーと専用サーバーの両方を使用する環境でのクライアントの構成

共有サーバーがサーバー側で構成されていて、ディスパッチャが登録されていない場合にクライアント接続要求が到着すると、その要求は専用サーバー・プロセスによって処理されます。特定のクライアントが常にディスパッチャを使用する必要がある場合は、接続記述子の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)で上書きされます。

関連項目: