ヘッダーをスキップ

Oracle9i Heterogeneous Connectivity管理者ガイド
リリース2(9.2)

部品番号B13816-01
Go To Table Of Contents
目次
Go To Index
索引

Go to previous page Go to next page

5
マルチスレッド・エージェント

この章では、マルチスレッド・エージェントの概要、分散データベース・システム全体の効率に対する影響および管理方法について説明します。

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

マルチスレッド・エージェントを使用する理由

この項では、マルチスレッド・エージェントが異機種間サービスとOracle Transparent Gatewayの効率全体に及ぼす効果について説明します。

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

専用エージェント・アーキテクチャの課題

過去のリリースの異機種間サービスのアーキテクチャでは、ユーザー・セッションごとに1つおよびデータベース・リンクごとに1つ、エージェントが起動されます。ユーザー・セッションが特定のデータベース・リンクを使用してOracle以外のシステムへのアクセスを試みると、そのユーザー・セッションおよびデータベース・リンク専用のエージェント・プロセスが起動されます。エージェント・プロセスが終了するのは、ユーザー・セッションの終了時またはデータベース・リンクのクローズ時のみです。次の場合には別個のエージェント・プロセスが起動されます。

このアーキテクチャは単純かつ明瞭です。 ただし、必要以上に大量のシステム・リソースが使用される可能性があるというデメリットがあります。

たとえば、数千のユーザー・セッションがOracle以外の同じシステムに同時にアクセスするとします。 エージェント・プロセスはユーザー・セッションごとに起動されるため、数千のエージェント・プロセスが同時に実行され、これらのエージェント・プロセスに対して数千の接続がオープンされることになります。エージェント・プロセスは、それぞれが特定の時点で実際にアクティブであるかどうかに関係なく、すべて実行されます。このため、エージェント・プロセスとオープン接続により、なんのメリットもないまま必要以上のシステム・リソースが使用される可能性があります。

Oracleデータベース・サーバーへの接続の場合は、この問題に対処するためにサーバーが共有サーバー・モードで起動されます。共有サーバー・モードでは、データベース接続を少数のサーバー・プロセスで共有できます。

マルチスレッド化のメリット

Oracle共有サーバー・アーキテクチャは、同時に数千のユーザー・セッションがオープンしている場合にも、特定の時点でアクティブになる接続の割合が小さいことを前提としています。共有サーバー・モードの場合は、共有サーバー・プロセスのプールが存在します。ユーザー・セッションはディスパッチャ・プロセスに接続し、ディスパッチャ・プロセスはユーザー・セッションから要求されたタスクをキューに入れます。タスクは、使用可能な最初の共有サーバー・プロセスにより取り出されます。通常、共有サーバー・プロセス数は、ユーザー・セッション数に比べて大幅に少なくなります。

マルチスレッド異機種間サービス・エージェントは、同じ機能をOracle以外のシステムへの接続に提供します。マルチスレッド・エージェント・アーキテクチャでは、共有エージェント・スレッドのプールが使用されます。ユーザー・セッションが要求したタスクはキューに置かれ、使用可能な最初のマルチスレッド・エージェント・スレッドにより取り出されます。特定の時点で実際にアクティブになるユーザー接続の割合はきわめて小さいため、マルチスレッド・アーキテクチャを使用するとシステム・リソースの使用効率が向上します。

マルチスレッド・エージェント・アーキテクチャ

マルチスレッド・エージェントは、システム識別子(SID)ごとに1つずつ事前に起動する必要があります。そのためには、エージェント制御ユーティリティagtctlを使用します。このユーティリティは、エージェントの構成と停止にも使用します。

システム上で実行される各TNSリスナーは、SIDセットについて着信接続要求をリスニングします。着信したOracle Net接続文字列内のSIDがリスナーでリスニングされているSIDの1つである場合は、そのリスナーが接続を処理します。さらに、そのSIDに対してマルチスレッド・エージェントが起動されている場合、リスナーはそのエージェントに要求を渡します。

マルチスレッド・エージェントのアーキテクチャでは、着信接続要求はそれぞれ次の3種類のスレッドを使用して処理されます。

図5-1に、マルチスレッド・エージェント・アーキテクチャを示します。このアーキテクチャでは、ユーザー・セッションから発行された要求がそれぞれ異なるタイプの矢印で示されています。 この図には、モニター・スレッドは示されていません。これは、モニター・スレッドはマルチスレッド・エージェントの起動後に作成され、他のスレッドを作成して監視するためです。通常、タスク・スレッドのほうがディスパッチャ・スレッドよりも多数です。

図5-1 マルチスレッド・エージェント・アーキテクチャ

この3種類のスレッドは、それぞれOracleマルチスレッド・サーバーのPMON、ディスパッチャおよび共有サーバー・プロセスにほぼ対応しています。


注意:

あるユーザー・セッションからの要求はすべて同じディスパッチャ・スレッドを通りますが、異なるタスク・スレッドで処理できます。また、複数のタスク・スレッドでOracle以外のシステムに対して同じ接続を使用することもできます。


以降の各項では、各種スレッドについて詳しく説明します。

モニター・スレッド

エージェント制御ユーティリティによりSIDに対してマルチスレッド・エージェントが起動されるときに、モニター・スレッドが作成されます。モニター・スレッドは次の機能を実行します。

ディスパッチャ・スレッド

ディスパッチャ・スレッドは次の機能を実行します。

タスク・スレッド

タスク・スレッドは次の機能を実行します。

マルチスレッド・エージェントの管理

前述のように、マルチスレッド異機種間サービス・エージェントは、Oracle以外のシステムへの接続を試みる前に、システム識別子(SID)ごとに1つずつ起動する必要があります。 この方法で起動されていないエージェントはマルチスレッド・モードで機能せず、「Oracle以外のシステムへのアクセスの設定」の説明に従って設定する必要があります。

マルチスレッド・エージェントは、エージェント制御ユーティリティagtctlにより起動、停止および構成されます。このユーティリティの機能は、lsnrctlと同様です。ただし、lsnrctlが構成ファイル(listener.ora)を読み取るのに対して、agtctlは構成情報をコマンドラインから取り込んで制御ファイルに書き込みます。

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

エージェント制御ユーティリティ(agtctl)のコマンド

表5-1に、agtctlの起動と停止、制御ファイルの作成とメンテナンスに使用するコマンドを示します。 

表5-1 エージェント制御ユーティリティのコマンド
コマンド 説明

startup

マルチスレッド・エージェントを起動します。

shutdown

マルチスレッド・エージェントを停止します。

set

マルチスレッド・エージェントの構成パラメータを設定します。

unset

パラメータをデフォルト値に戻します。

show

構成パラメータの値を表示します。

delete

制御ファイルから特定のSIDのエントリを削除します。

exit

シェル・モードを終了します。

help

使用可能なコマンドのリストを表示します。

前述のコマンドを発行するには、次の2つの方法があります。

agtctlコマンドの構文とパラメータは、発行時のモードに応じて異なります。


注意:

  • すべてのコマンドに大/小文字区別があります。

  • エージェント制御ユーティリティの制御ファイルは、AGTCTL_ADMIN環境変数が指すディレクトリ、またはTNS_ADMIN環境変数が指すディレクトリに格納されます。この2つの環境変数のうち少なくとも一方が設定され、エージェントがアクセスするディレクトリを指していることを確認してください。

  • 異機種間サービス・エージェントが環境変数の設定を必要とする場合、または専用モードで動作するエージェントのlistener.oraエントリの構成時にENVSパラメータを使用した場合は、agtctlユーティリティを実行するUNIX(またはDOS)シェル内ですべての必須環境変数を設定する必要があります。


1行コマンド・モードの使用方法

この項では、agtctlコマンドの使用方法について説明します。これらのコマンドは1行コマンド・モードで表示されます。

マルチスレッド・エージェントの構成パラメータの設定

マルチスレッド・エージェントを起動する前に、その構成パラメータを設定する必要があります。このパラメータにより、エージェントの構成内容が決定されます。構成パラメータが特に設定されていない場合は、デフォルト値が使用されます。 構成パラメータとデフォルト値については、表5-2を参照してください。 

setコマンドを使用して、マルチスレッド・エージェントの構成パラメータを設定します。

構文

agtctl set  parameter  parameter_value  agent_sid

各要素の意味:

agtctl  set  max_dispatchers 5 salesDB

マルチスレッド・エージェントの起動

startupコマンドを使用して、エージェントをマルチスレッド・モードで起動します。

構文

agtctl startup  agent_name  agent_sid

各要素の意味:

agtctl startup  tg4sybs  salesDB

マルチスレッド・エージェントの停止

shutdownコマンドを使用してマルチスレッド・エージェントを停止します。3つの停止形式があります。

構文

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エントリの削除

制御ファイルから指定の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

マルチスレッド・エージェント制御用の構成パラメータ

次の表に、エージェント制御ユーティリティの構成パラメータを示します。

表5-2 agtctlの初期化パラメータ
パラメータ 説明 デフォルト値

max_dispatchers

最大ディスパッチャ数

1

tcp_dispatchers

tcpでリスニングするディスパッチャ数(その他はipcを使用)

0

max_task_threads

タスク・スレッド数

2

max_sessions

最大セッション数

5

listener_address

リスナーがリスニングするアドレス(登録に必要)

(ADDRESS_LIST=
    (ADDRESS=
        (PROTOCOL=IPC)
        (KEY=PNPKEY))
    (ADDRESS=
        (PROTOCOL=IPC)
        (KEY=oracle_sid))
    (ADDRESS=
        (PROTOCOL=TCP)
        (HOST=127.0.0.1)
        (PORT=1521)))

注意: oracle_sidはOracleデータベースのSIDです。

shutdown_address

エージェントがagtctlからの停止メッセージをリスニングする必要のあるアドレス

(ADDRESS=
    (PROTOCOL=IPC)
    (KEY=oracle_sid||agent_sid))

注意:

  • agent_sidは、マルチスレッド・エージェントのSIDです。

  • ||は、oracle_sidおよびagent_sidが1つの文字列として連結されることを示します。


Go to previous page Go to next page
Oracle
Copyright © 2001, 2002 Oracle Corporation.

All Rights Reserved.
Go To Table Of Contents
目次
Go To Index
索引