| Oracle9i Heterogeneous Connectivity管理者ガイド リリース2(9.2) 部品番号B13816-01 |
|
この章では、マルチスレッド・エージェントの概要、分散データベース・システム全体の効率に対する影響および管理方法について説明します。
この章の内容は、次のとおりです。
この項では、マルチスレッド・エージェントが異機種間サービスとOracle Transparent Gatewayの効率全体に及ぼす効果について説明します。
この項の内容は、次のとおりです。
過去のリリースの異機種間サービスのアーキテクチャでは、ユーザー・セッションごとに1つおよびデータベース・リンクごとに1つ、エージェントが起動されます。ユーザー・セッションが特定のデータベース・リンクを使用してOracle以外のシステムへのアクセスを試みると、そのユーザー・セッションおよびデータベース・リンク専用のエージェント・プロセスが起動されます。エージェント・プロセスが終了するのは、ユーザー・セッションの終了時またはデータベース・リンクのクローズ時のみです。次の場合には別個のエージェント・プロセスが起動されます。
このアーキテクチャは単純かつ明瞭です。 ただし、必要以上に大量のシステム・リソースが使用される可能性があるというデメリットがあります。
たとえば、数千のユーザー・セッションがOracle以外の同じシステムに同時にアクセスするとします。 エージェント・プロセスはユーザー・セッションごとに起動されるため、数千のエージェント・プロセスが同時に実行され、これらのエージェント・プロセスに対して数千の接続がオープンされることになります。エージェント・プロセスは、それぞれが特定の時点で実際にアクティブであるかどうかに関係なく、すべて実行されます。このため、エージェント・プロセスとオープン接続により、なんのメリットもないまま必要以上のシステム・リソースが使用される可能性があります。
Oracleデータベース・サーバーへの接続の場合は、この問題に対処するためにサーバーが共有サーバー・モードで起動されます。共有サーバー・モードでは、データベース接続を少数のサーバー・プロセスで共有できます。
Oracle共有サーバー・アーキテクチャは、同時に数千のユーザー・セッションがオープンしている場合にも、特定の時点でアクティブになる接続の割合が小さいことを前提としています。共有サーバー・モードの場合は、共有サーバー・プロセスのプールが存在します。ユーザー・セッションはディスパッチャ・プロセスに接続し、ディスパッチャ・プロセスはユーザー・セッションから要求されたタスクをキューに入れます。タスクは、使用可能な最初の共有サーバー・プロセスにより取り出されます。通常、共有サーバー・プロセス数は、ユーザー・セッション数に比べて大幅に少なくなります。
マルチスレッド異機種間サービス・エージェントは、同じ機能をOracle以外のシステムへの接続に提供します。マルチスレッド・エージェント・アーキテクチャでは、共有エージェント・スレッドのプールが使用されます。ユーザー・セッションが要求したタスクはキューに置かれ、使用可能な最初のマルチスレッド・エージェント・スレッドにより取り出されます。特定の時点で実際にアクティブになるユーザー接続の割合はきわめて小さいため、マルチスレッド・アーキテクチャを使用するとシステム・リソースの使用効率が向上します。
マルチスレッド・エージェントは、システム識別子(SID)ごとに1つずつ事前に起動する必要があります。そのためには、エージェント制御ユーティリティagtctlを使用します。このユーティリティは、エージェントの構成と停止にも使用します。
システム上で実行される各TNSリスナーは、SIDセットについて着信接続要求をリスニングします。着信したOracle Net接続文字列内のSIDがリスナーでリスニングされているSIDの1つである場合は、そのリスナーが接続を処理します。さらに、そのSIDに対してマルチスレッド・エージェントが起動されている場合、リスナーはそのエージェントに要求を渡します。
マルチスレッド・エージェントのアーキテクチャでは、着信接続要求はそれぞれ次の3種類のスレッドを使用して処理されます。
モニター・スレッドは、次の操作を受け持ちます。
ディスパッチャ・スレッドは、次の操作を受け持ちます。
タスク・スレッドは、Oracleプロセスからの要求を処理します。
図5-1に、マルチスレッド・エージェント・アーキテクチャを示します。このアーキテクチャでは、ユーザー・セッションから発行された要求がそれぞれ異なるタイプの矢印で示されています。 この図には、モニター・スレッドは示されていません。これは、モニター・スレッドはマルチスレッド・エージェントの起動後に作成され、他のスレッドを作成して監視するためです。通常、タスク・スレッドのほうがディスパッチャ・スレッドよりも多数です。
この3種類のスレッドは、それぞれOracleマルチスレッド・サーバーのPMON、ディスパッチャおよび共有サーバー・プロセスにほぼ対応しています。
以降の各項では、各種スレッドについて詳しく説明します。
エージェント制御ユーティリティを使用してマルチスレッド・エージェントを起動および停止する方法の詳細は、「マルチスレッド・エージェントの管理」を参照してください。
関連項目:
エージェント制御ユーティリティによりSIDに対してマルチスレッド・エージェントが起動されるときに、モニター・スレッドが作成されます。モニター・スレッドは次の機能を実行します。
このSIDに対するディスパッチャの実行中には、リスナーは着信接続要求の取得時に新規プロセスを起動しません。かわりに、リスナーは接続をこの同じディスパッチャに渡します。
これにより、リスナーは着信接続要求を負荷の最も少ないディスパッチャに渡すことができます。
ディスパッチャ・スレッドは次の機能を実行します。
タスク・スレッドは次の機能を実行します。
前述のように、マルチスレッド異機種間サービス・エージェントは、Oracle以外のシステムへの接続を試みる前に、システム識別子(SID)ごとに1つずつ起動する必要があります。 この方法で起動されていないエージェントはマルチスレッド・モードで機能せず、「Oracle以外のシステムへのアクセスの設定」の説明に従って設定する必要があります。
マルチスレッド・エージェントは、エージェント制御ユーティリティagtctlにより起動、停止および構成されます。このユーティリティの機能は、lsnrctlと同様です。ただし、lsnrctlが構成ファイル(listener.ora)を読み取るのに対して、agtctlは構成情報をコマンドラインから取り込んで制御ファイルに書き込みます。
この項の内容は、次のとおりです。
表5-1に、agtctlの起動と停止、制御ファイルの作成とメンテナンスに使用するコマンドを示します。
前述のコマンドを発行するには、次の2つの方法があります。
このモードを1行コマンド・モードと呼びます。
agtctlと入力すると、AGTCTL>プロンプトが表示されます。次に、agtctlシェル内からコマンドを入力できます。
このモードをシェル・モードと呼びます。
agtctlコマンドの構文とパラメータは、発行時のモードに応じて異なります。
この項では、agtctlコマンドの使用方法について説明します。これらのコマンドは1行コマンド・モードで表示されます。
マルチスレッド・エージェントを起動する前に、その構成パラメータを設定する必要があります。このパラメータにより、エージェントの構成内容が決定されます。構成パラメータが特に設定されていない場合は、デフォルト値が使用されます。 構成パラメータとデフォルト値については、表5-2を参照してください。
setコマンドを使用して、マルチスレッド・エージェントの構成パラメータを設定します。
agtctl set parameter parameter_value agent_sid
各要素の意味:
parameterは、設定するパラメータです。
agent_sidは、このエージェントで処理するSIDです。このSIDは、1行コマンド・モードでは必須です。
agtctl set max_dispatchers 5 salesDB
startupコマンドを使用して、エージェントをマルチスレッド・モードで起動します。
agtctl startup agent_name agent_sid
各要素の意味:
agent_nameはエージェント名です。 たとえば、tg4sybs、tg4msql、hsodbcなどのエージェントを指定できます。
agent_sidは、このエージェントで処理するSIDです。このSIDは、1行コマンド・モードでは必須です。
agtctl startup tg4sybs salesDB
shutdownコマンドを使用してマルチスレッド・エージェントを停止します。3つの停止形式があります。
この形式の停止はデフォルトです。agtctlがエージェントと対話してそれ自体を正常終了するように要求します。すべてのセッションは、現在実行中の操作を完了してから停止します。
この形式の停止の場合、agtctlはエージェントに対して即時に終了するように指示します。エージェント・プロセスは、現行のセッションの状態に関係なく即時に終了します。
この形式の停止の場合、agtctlはエージェントと対話しません。単にシステム・コールを発行してエージェント・プロセスを終了します。
agtctl shutdown [immediate|abort] agent_sid
各要素の意味:
agtctl shutdown immediate salesDB
構成パラメータの値を検査するには、showコマンドを使用します。
agtctl show parameter agent_sid
各要素の意味:
agtctl show max_dispatchers salesDB
unsetコマンドを使用すると、構成パラメータをデフォルト値にリセットできます。
agtctl unset parameter agent_sid
各要素の意味:
agtctl unset max_dispatchers salesDB
制御ファイルから指定のSIDエントリを削除するには、deleteコマンドを使用します。
agtctl delete agent_sid
各要素の意味:
agtctl delete salesDB
helpコマンドを使用して、agtctlに使用可能なコマンドのリストまたは特定のコマンドの構文を表示します。
agtctl help [command]
各要素の意味:
agtctl help set
シェル・モードでagtctlを起動するには、AGTCTL>プロンプトに対してagtctlと入力します。その後はagtctlシェルからコマンドを発行するため、コマンド文字列に接頭辞agtctlを付ける必要はありません。
次のように入力し、処理するエージェントのSID名を設定します。
set agent_sid agent_sid
これ以降に発行するすべてのコマンドは、agent_sid値を変更するまでは、このSIDに対するものとみなされます。1行コマンド・モードとは異なり、コマンド文字列でagent_sidを指定する必要はありません。
オプションで、次のようにエラー・メッセージ言語を英語以外の言語に設定できます。
set language language
コマンド自体は、1行コマンド・モードの場合と同じです。シェル・モードを終了するには、exitと入力します。
次にシェル・モードのコマンドの例を示します。
この例では、shutdown_address構成パラメータに新規の値を設定しています。
set shutdown_address (address=(protocol=ipc)(key=oraDBsalesDB))
この例では、マルチスレッド・エージェントを起動しています。
startup tg4sybs
次の表に、エージェント制御ユーティリティの構成パラメータを示します。
|
|
![]() Copyright © 2001, 2002 Oracle Corporation. All Rights Reserved. |
|