11 共有サーバー・アーキテクチャの構成
クライアントの負荷によりメモリーやその他のシステム・リソースに負荷がかかりすぎる場合、データベース管理者は、共有サーバー・リソースを起動してこの負荷の問題を解消できます。共有サーバー・アーキテクチャによって、データベース・サーバーでは、多数のクライアント・プロセスで非常に少数のサーバー・プロセスを共有できるため、サポート可能なユーザー数が増大します。共有サーバー・アーキテクチャにより、多数のクライアント・プロセスがディスパッチャに接続されます。ディスパッチャは、複数の着信ネットワーク・セッション要求を共通キューに送ります。サーバー・プロセスの共有プールの中のアイドル状態の共有サーバー・プロセスは、共通キューから要求を取り出します。つまり、サーバー・プロセスの小規模プールによる多数のクライアントの処理が可能になります。これは、システムが過負荷の場合やシステムのメモリーが限られている場合に役に立ちます。
関連項目:
共有サーバー構成の詳細は、『Oracle Database管理者ガイド』を参照してください。
11.1 ディスパッチャについて
ディスパッチャ、バーチャル・サーキットおよび共有サーバーの共有メモリー・リソースをあらかじめ設定することによって、実行時に共有サーバーを使用可能にします。データベース管理者は、SQL ALTER SYSTEM
文を使用することによって、ディスパッチャと共有サーバーを起動でき、インスタンスを再起動する必要がありません。共有サーバー・モードをオンにすると、DISPATCHERSパラメータが設定されていない場合でも、ディスパッチャはTCP/IPプロトコルで自動的に起動されます。共有サーバーの使用方法は、データベース初期化パラメータ・ファイルの次のDISPATCHERSパラメータの設定と同じです。
DISPATCHERS="(PROTOCOL=tcp)"
次の状態の場合に、DISPATCHERSパラメータを直接構成します。
-
TCP/IP以外のプロトコルを構成する必要がある場合。
-
多重化など、1つ以上のオプションのディスパッチャ属性を構成する必要がある場合
DISPATCHERSパラメータの次の属性を指定できます。PROTOCOL
属性は必須であり、その他はオプションです。ADDRESS
属性は、ファイアウォールを使用するときなど、ポート番号を指定する場合に使用されます。
ディスパッチャの構成は、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: ディスパッチャ・プロセスの速度統計を提供します。
関連項目:
-
これらのビューの詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』および『Oracle Databaseリファレンス』を参照してください。
-
共有サーバー構成の詳細は、『Oracle Database管理者ガイド』を参照してください。
-
DISPATCHERSパラメータ構成およびサポートされる属性の詳細は、『Oracle Databaseリファレンス』を参照してください。
-
ALTER
SYSTEM
文の詳細は、『Oracle Database SQLリファレンス』を参照してください。
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.ora
にUSE_DEDICATED_SERVER=on
と指定します。これにより、クライアントが使用する接続記述子のCONNECT_DATA
セクションに(SERVER=dedicated)
が追加されます。ノート:
USE_DEDICATED_SERVER
がON
に設定されると、接続記述子の既存の(SERVER=
value
)
エントリが(SERVER=dedicated)
で上書きされます。
関連項目:
-
SERVERパラメータの設定方法については、「拡張接続データ・パラメータについて」を参照してください
-
USE_DEDICATED_SERVERパラメータの設定方法については、「プロセスへの接続要求のルーティング」を参照してください
-
『Oracle Call Interfaceプログラマーズ・ガイド』および『Oracle Database管理者ガイド』を参照してください。