19 Oracle Messaging Gatewayの操作
Oracle Messaging Gateway(MGW)をロードおよび設定すると、構成および実行が可能になります。DBMS_MGWADM
.ALTER_AGENT
を使用して、メッセージ・ゲートウェイ・エージェントがデータベース接続の確立に使用するユーザー名、パスワード、データベース指定子および接続タイプを設定できます。
トピック:
注意:
例で示すすべてのコマンドは、MGW_ADMINISTRATOR_ROLE
が付与されたユーザーが実行する必要があります。
関連項目:
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_MGWADMおよびDBMS_MGWMSGに関する項
19.1 Oracle Messaging Gatewayのエージェントの構成
メッセージは、Oracle Database Advanced QueuingとOracle以外のメッセージ・システム間でメッセージ・ゲートウェイによって伝播されます。メッセージ・ゲートウェイ・エージェントは、Oracle Databaseサーバーの外部プロセスとして実行されます。
メッセージ・ゲートウェイでは、1つのデータベースに対して複数のエージェントがサポートされています。デフォルトのエージェントは、DEFAULT_AGENT
という名前で自動的に作成されます。伝播ジョブの分離およびグループ化、Oracle RAC環境での拡張を可能にする他の名前のエージェントも作成できます。通常、Oracle RAC環境でない1つのインスタンスの場合、デフォルトのエージェントのみで十分です。
この項の内容は次のとおりです。
19.1.1 メッセージ・ゲートウェイ・エージェントの作成
DBMS_MGWADM
.CREATE_AGENT
を使用して、追加のメッセージ・ゲートウェイ・エージェントを作成できます。メッセージ・エージェントのデフォルトのエージェントであるDEFAULT_AGENT
は、メッセージ・エージェントがインストールされると自動的に作成され、常駐するようになります。
エージェントは、作成時または作成後に、DBMS_MGWADM
.ALTER_AGENT
を使用して、エージェント・ユーザー、接続情報、データベース・サービスおよびリソース制限で構成できます。メッセージ・ゲートウェイ・エージェントは、起動前に、MGW_AGENT_ROLE
ロールが付与されているデータベース・ユーザーで構成される必要があります。
例19-1では、myagent
という名前のエージェントを作成し、エージェント・ユーザーのデータベース接続情報を指定します。デフォルト値は、その他すべてのパラメータに対して使用されます。
例19-1 メッセージ・ゲートウェイ・エージェントの作成
SQL> exec DBMS_MGWADM.CREATE_AGENT( agent_name => 'myagent', username => 'mgwagent', password => 'mgwagent_password', database => 'mydatabase');
19.1.2 メッセージ・ゲートウェイ・エージェントの削除
メッセージ・ゲートウェイ・エージェントは、DBMS_MGWADM
.REMOVE_AGENT
をコールすることによって削除できます。エージェントを削除する前に、そのエージェントに関連付けられているすべてのメッセージ・ゲートウェイのリンクを削除し、そのエージェントを停止する必要があります。デフォルトのエージェントのDEFAULT_AGENT
は削除できません。例19-2では、myagent
というエージェントを削除します。
例19-2 メッセージ・ゲートウェイ・エージェントの削除
SQL> exec DBMS_MGWADM.REMOVE_AGENT(agent_name => 'myagent');
19.1.3 データベース接続の設定
メッセージ・ゲートウェイ・エージェントは、データベースの外部プロセスとして実行されます。Oracle Database Advanced Queuingおよびメッセージ・ゲートウェイ・パッケージにアクセスするには、メッセージ・ゲートウェイ・エージェントからデータベースへの接続を確立する必要があります。DBMS_MGWADM
.ALTER_AGENT
を使用して、メッセージ・ゲートウェイ・エージェントがデータベース接続の確立に使用するユーザー名、パスワードおよびデータベース接続文字列を設定できます。メッセージ・ゲートウェイ・エージェントを起動するには、ユーザーにMGW_AGENT_ROLE
が付与されている必要があります。
例19-3は、ネット・サービス名mydatabase
を使用して、パスワードmgwagent_password
のユーザーmgwagent
に対して構成されているメッセージ・ゲートウェイのデフォルトのエージェントを示したものです。
例19-3 データベース接続情報の設定
SQL> exec DBMS_MGWADM.ALTER_AGENT ( agent_name => 'default_agent', username => 'mgwagent', password => 'mgwagent_password', database => 'mydatabase');
19.1.4 リソース制限の設定
DBMS_MGWADM
.ALTER_AGENT
を使用して、メッセージ・ゲートウェイ・エージェントのリソース制限を設定できます。たとえば、メッセージ・ゲートウェイ・エージェント・プロセスのヒープ・サイズ、およびそのエージェント・プロセスで使用される伝播スレッド数を設定できます。デフォルト値は、メモリー・ヒープ64MBおよび伝播スレッド1です。特定のエージェントの場合、エージェントがDBMS_MGWADM
.CREATE_AGENT
によって作成されるときにこれらの値を指定することもできます。
例19-4では、myagentというエージェントについて、ヒープ・サイズ96MB、伝播スレッド2を設定します。
メッセージ・ゲートウェイ・エージェントを実行中に、メモリー・ヒープ・サイズと伝播スレッド数は変更できません。
例19-4 リソース制限の設定
SQL> exec DBMS_MGWADM.ALTER_AGENT( agent_name => 'myagent', max_memory => 96, max_threads => 2);
19.2 Oracle Messaging Gatewayのエージェントの起動と停止
この項の内容は次のとおりです。
19.2.1 Oracle Messaging Gatewayのエージェントの起動
メッセージ・ゲートウェイ・エージェントが構成されたら、DBMS_MGWADM.STARTUP
を使用して起動できます。例19-5に、デフォルトのエージェントおよびmyagent
エージェントの起動方法を示します。
「Oracle Messaging Gatewayの監視」で説明されているように、MGW_GATEWAY
ビューを使用してメッセージ・ゲートウェイ・エージェントのステータスをチェックできます。
例19-5 メッセージ・ゲートウェイ・エージェントの起動
SQL> exec DBMS_MGWADM.STARTUP; SQL> exec DBMS_MGWADM.STARTUP ('myagent');
19.2.2 Oracle Messaging Gatewayのエージェントの停止
DBMS_MGWADM
.SHUTDOWN
を使用して、メッセージ・ゲートウェイ・エージェントを停止できます。例19-6に、Messaging Gatewayのデフォルトのエージェントおよびmyagent
エージェントの停止方法を示します。
「Oracle Messaging Gatewayの監視」で説明されているように、MGW_GATEWAY
ビューを使用してメッセージ・ゲートウェイ・エージェントが正常に停止したかどうかをチェックできます。
例19-6 メッセージ・ゲートウェイ・エージェントの停止
SQL> exec DBMS_MGWADM.SHUTDOWN; SQL> exec DBMS_MGWADM.SHUTDOWN ('myagent');
19.2.3 Oracle Messaging Gatewayのエージェントのスケジューラのジョブ
メッセージ・ゲートウェイでは、Schedulerジョブを使用して、メッセージ・ゲートウェイ・エージェントを起動します。このジョブは、DBMS_MGWADM.STARTUP
プロシージャをコールすると作成されます。ジョブを実行すると、外部プロセスでメッセージ・ゲートウェイ・エージェントを作成する外部プロシージャがコールされます。ジョブは、次の場合に削除されます。
-
DBMS_MGWADM.SHUTDOWN
がコールされたためにエージェントが停止する場合 -
再起動不能エラーが発生したためにエージェントが終了する場合
メッセージ・ゲートウェイは、DBMS_SCHEDULER
を使用して、繰返し間隔1分で繰返し可能なSchedulerジョブを作成します。ジョブの所有者はSYS
です。データベースの停止、データベースの障害または再起動可能なエラーによって指定したジョブ・インスタンスが終了したとき、繰返しジョブによってメッセージ・ゲートウェイ・エージェントは、自動的に再起動が可能になります。指定した時間に実行できるメッセージ・ゲートウェイ・エージェント・ジョブのインスタンスは1つのみです。
各エージェントは、Schedulerジョブ・クラスを使用して、エージェントのSchedulerジョブのサービス・アフィニティを指定します。このジョブ・クラスは、DBMS_MGWADM
.CREATE_AGENT
またはDBMS_MGWADM
.ALTER_AGENT
で指定されるデータベース・サービスで構成されます。データベース・サービスの設定は、データベース管理者が担当します。いずれのデータベース・サービスも指定されない場合、各インスタンスにマップされているデフォルトのデータベース・サービスが使用されます。
メッセージ・ゲートウェイのデフォルトのエージェントで使用されるSchedulerジョブ・クラスの名前は、SYS
.MGW_JOBCLS_DEFAULT_AGENT
です。デフォルトのエージェントによって使用されるSchedulerジョブの名前は、SYS
.MGW_JOB_DEFAULT_AGENT
です。
メッセージ・ゲートウェイの指定エージェントで使用されるSchedulerジョブ・クラスの名前は、SYS
.MGW_JOBCLS_
<agent_name
>です。指定エージェントによって使用されるSchedulerジョブの名前は、SYS
.MGW_JOB_
<agent_name
>です。
エージェント・ジョブにエラーが発生すると、エラーは再起動可能エラーと再起動不能エラーに分類されます。再起動可能エラーとは、エージェント・ジョブを再起動すると解決する問題を指します。再起動不能エラーとは、永続的なものでエージェント・ジョブを再起動しても、再度発生する問題を指します。ORA-01089(即時シャットダウン処理中)およびORA-28576(外部プロシージャ・エージェントへのRPC接続が失われました)は、再起動可能エラー例です。ORA-06520(外部ライブラリのロード中にエラーが発生しました)は、再起動不能エラーの例です。
メッセージ・ゲートウェイでは、データベース停止トリガーを使用します。メッセージ・ゲートウェイ・エージェントが停止中のインスタンス上で起動されると、トリガーによってエージェントの停止が通知され、通知を受け取るとエージェントは現在の実行を終了します。ジョブ・スケジューラによって、後で自動的にジョブの再実行がスケジュールされます。
データベース機能障害またはエージェント・ジョブによって検出された再起動不能エラーのため、メッセージ・ゲートウェイ・エージェント・ジョブが終了する場合は、ジョブは削除されず、後でジョブ・スケジューラによって自動的にジョブの再実行がスケジュールされます。
MGW_GATEWAY
ビューには、メッセージ・ゲートウェイ・エージェントを実行中のエージェント・ステータス、データベース・サービスおよびデータベース・インスタンスが表示されます。Oracle Schedulerビューで、Schedulerジョブ、ジョブ・クラスおよびジョブ実行の詳細に関する情報を確認できます。
関連項目:
-
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_SCHEDULERに関する項
19.2.4 Oracle RAC上でのOracle Messaging Gatewayのエージェントの実行
Oracle Real Application Clusters (Oracle RAC)環境とOracle RAC以外の環境で、メッセージ・ゲートウェイ・ジョブの起動原理と停止原理が同じ場合は、Oracle RAC環境に対して、いくつかの点を考慮する必要があります。
Oracle RAC環境でも、構成済のメッセージ・ゲートウェイ・エージェントごとに1つのプロセスを実行できます。たとえば、デフォルトのエージェントと2つの指定エージェントがエージェント・ユーザーで構成されている場合、これら3つのエージェントはすべて同時に実行できます。各エージェントに関連付けられているデータベース・サービスが、エージェントのSchedulerジョブのサービス・アフィニティ、およびエージェント・プロセスが実行されるデータベースのインスタンスを決定します。
Oracle RAC環境でデータベース・インスタンスを停止すると、メッセージ・ゲートウェイ・エージェントが停止中のインスタンスで実行中の場合のみ、メッセージ・ゲートウェイ停止トリガーによってエージェントに停止が通知されます。インスタンスが再起動されると、ジョブ・スケジューラによって自動的に別のインスタンスでジョブの今後の再実行がスケジュールされるか、または停止時のインスタンスでのみジョブを実行できる場合は、そのインスタンスで再実行するジョブがスケジュールされます。
メッセージ・ゲートウェイ・エージェントによるすべてのデータベース接続先を、メッセージ・ゲートウェイ・エージェントのプロセスが実行中のインスタンスにすることをお薦めします。これにより、Oracle RAC環境で確実に適切なフェイルオーバー動作が得られます。
メッセージ・ゲートウェイ・エージェントがデータベース・サービスと関連付けられている場合、サービスが実行中のインスタンスで有効化されるまで、そのエージェントのSchedulerジョブは実行されません。データベースを停止すると、そのデータベースへのすべてのサービスが停止し、データベースの起動時にそのサービスを手動で再起動する必要がある場合があります。
関連項目:
-
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の
DBMS_MGWADM
およびDBMS_SCHEDULER
に関する項
19.3 メッセージ・システム・リンクの構成
Oracle以外のメッセージ・システムのクライアントとして実行すると、メッセージ・ゲートウェイ・エージェントはメッセージ・システム・リンクを介してOracle以外のメッセージ・システムと通信できます。メッセージ・システム・リンクとは、メッセージ・ゲートウェイ・エージェントとOracle以外のメッセージ・システム間の一連の接続です。
Oracle以外のメッセージ・システムのメッセージ・システム・リンクを構成するには、ユーザーはエージェント情報を指定してOracle以外のメッセージ・システムへの接続を確立する必要があります。ユーザーは、メッセージ・コネクションの最大数を指定できます。
エージェント名は、各メッセージ・システム・リンクに関連付けられます。これは、リンクの作成時に設定され、変更できません。リンクに関連付けられているエージェントは、そのリンクと関連付けられている登録済のキューを使用するすべての伝播ジョブを処理する必要があります。メッセージ・システム・リンクの作成時にエージェント名が指定されていない場合、メッセージ・ゲートウェイのエージェントが使用されます。
トランザクションと永続メッセージをサポートするOracle以外のメッセージ・システムのメッセージ・システム・リンクを構成する場合は、着信伝播および発信伝播のログ・キューの固有の名前を指定して1回のみメッセージが配信されるようにする必要があります。ログ・キューは、メッセージ・ゲートウェイ・エージェントによってのみ使用される必要があります。他のプログラムでは、ログ・キューのメッセージをエンキューまたはデキューできません。着信ログ・キューと発信ログ・キューは同じ物理的キューを参照できますが、別の物理的キューを参照した方がパフォーマンスは向上します。
1つのメッセージ・ゲートウェイ・エージェントにつき、1つの伝播ログ・キューにアクセスできます。これにより、指定のログ・キューに、そのエージェントによって処理される伝播ジョブのみに関するログ記録が含まれ、そのエージェントは、発生する可能性のある他のログ記録の破棄が可能であることが保証されます。
メッセージ・システム・リンクを構成する際に、options
引数を指定することもできます。options
引数とは、SYS.MGW_PROPERTY
型の組{名前、値}のセットです。
この項の内容は次のとおりです。
19.3.1 WebSphere MQ Base Javaリンクの作成
WebSphere MQ Base Javaリンクは、次の情報を指定し、DBMS_MGWADM.CREATE_MSGSYSTEM_LINK
をコールすることによって作成されます。
-
インタフェース型:
DBMS_MGWADM.MQSERIES_BASE_JAVA_INTERFACE
-
WebSphere MQ接続情報
-
WebSphere MQサーバーのホスト名およびポート番号
-
キュー・マネージャ名
-
チャネル名
-
ユーザー名とパスワード
-
-
許可されるメッセージ・コネクションの最大数
-
着信伝播および発信伝播のログ・キュー名
-
オプション情報の例
-
送信、受信およびセキュリティの終了
-
キャラクタ・セット
-
例19-7では、WebSphere MQ Base Javaリンクmqlink
を構成します。このリンクは、WebSphere MQチャネルmychannel
を使用して、ホストmyhost.mydomain
およびポート1414上のWebSphere MQキュー・マネージャmy.queue.manager
を使用するように構成されます。
この例では、WebSphere MQ SendExit
クラスを登録するオプションも設定します。クラスmySendExit
は、mgw.ora
のCLASSPATH
セットにある必要があります。メッセージ・ゲートウェイのデフォルトのエージェント(DEFAULT_AGENT
)は、リンク、およびそのリンクを使用するすべての伝播ジョブを処理する必要があります。
関連項目:
-
メッセージ・ゲートウェイ・エージェントのCLASSPATHの設定の詳細は、「mgw.ora初期化ファイルについて」を参照してください。
例19-7 WebSphere MQ Base Javaリンクの構成
DECLARE v_options sys.mgw_properties; v_prop sys.mgw_mqseries_properties; BEGIN v_prop := sys.mgw_mqseries_properties.construct(); v_prop.interface_type := dbms_mgwadm.MQSERIES_BASE_JAVA_INTERFACE; v_prop.max_connections := 1; v_prop.username := 'mqm'; v_prop.password := 'mqm'; v_prop.hostname := 'myhost.mydomain'; v_prop.port := 1414; v_prop.channel := 'mychannel'; v_prop.queue_manager := 'my.queue.manager'; v_prop.outbound_log_queue := 'mylogq'; -- Specify a WebSphere MQ send exit class 'mySendExit' to be associated with -- the queue. -- Note that this is used as an example of how to use the options parameter, -- but is not an option that is usually set. v_options := sys.mgw_properties(sys.mgw_property('MQ_SendExit', 'mySendExit')); dbms_mgwadm.create_msgsystem_link( linkname => 'mqlink', agent_name=>'default_agent', properties => v_prop, options => v_options ); END;
19.3.2 WebSphere MQ JMSリンクの作成
WebSphere MQ JMSリンクは、次の情報を指定し、DBMS_MGWADM.CREATE_MSGSYSTEM_LINK
をコールすることによって作成されます。
-
インタフェース型
Java Message Service(JMS)は、キュー・コネクションとトピック・コネクションを識別します。Sun MicrosystemsのJMS 1.1標準は、単一のJMSコネクションでJMSキューおよびトピックの両方へのアクセスを可能にするドメイン統一をサポートしています。
-
インタフェース型
DBMS_MGWADM.JMS_CONNECTION
で作成されたWebSphere MQ JMSリンクは、JMSキューおよびトピックの両方へのアクセスに使用できます。これは、WebSphere MQ JMSリンクの推奨インタフェースです。 -
インタフェース型
DBMS_MGWADM.JMS_QUEUE_CONNECTION
で作成されたWebSphere MQ JMSリンクは、JMSキューへのアクセスにのみ使用できます。 -
インタフェース型
DBMS_MGWADM.JMS_TOPIC_CONNECTION
で作成されたWebSphere MQ JMSリンクは、JMSトピックへのアクセスにのみ使用できます。
-
-
WebSphere MQ接続情報
-
WebSphere MQサーバーのホスト名およびポート番号
-
キュー・マネージャ名
-
チャネル名
-
ユーザー名とパスワード
-
-
許可されるメッセージ・コネクションの最大数
メッセージ・コネクションはJMSセッションにマップされます。
-
着信伝播および発信伝播のログ宛先(JMSキューまたはJMSトピック)
ログの宛先タイプはリンクの型に有効である必要があります。JMS統一リンクとJMSキュー・リンクではログの宛先にJMSキューを使用し、JMSトピック・リンクではトピックを使用する必要があります。
-
WebSphere MQ JMS統一リンクまたはキュー・リンクの場合は、ログ・キュー名はWebSphere MQ管理ツールを使用して作成される物理的WebSphere MQ JMSキューの名前である必要があります。
-
WebSphere MQ JMSトピック・リンクの場合は、ログ・キュー名はWebSphere MQ JMSトピックの名前である必要があります。そのトピックによって使用される物理的WebSphere MQキューは、WebSphere MQ管理ツールを使用して作成される必要があります。デフォルトでは、使用される物理的キューは
SYSTEM.JMS.D.SUBSCRIBER.QUEUE
です。リンク・オプションを使用して、別の物理的キューを指定できます。
-
-
オプション情報の例
-
送信、受信およびセキュリティの終了
-
キャラクタ・セット
-
JMSトピックに使用されるWebSphere MQパブリッシュ・サブスクライブ構成
-
例19-8では、JMSトピック・インタフェースを使用してWebSphere MQキュー・マネージャに対するメッセージ・ゲートウェイ・リンクを構成します。このリンクは、mqjmslink
という名前で、WebSphere MQチャネルmychannel
を使用して、ホストmyhost.mydomain
およびポート1414上のWebSphere MQキュー・マネージャmy.queue.manager
を使用するように構成されます。
この例ではオプション
・パラメータを使用して、ログ・トピックで使用されるデフォルト以外の永続的なサブスクライバ・キューを指定します。メッセージ・ゲートウェイ・エージェントmyagent
は、リンク、およびそのリンクを使用するすべての伝播ジョブを処理する必要があります。
関連項目:
-
JMSキューおよびトピックの詳細は、「WebSphere MQ JMSキューまたはトピックの登録」を参照してください。
例19-8 WebSphere MQ JMSリンクの構成
DECLARE v_options sys.mgw_properties; v_prop sys.mgw_mqseries_properties; BEGIN v_prop := sys.mgw_mqseries_properties.construct(); v_prop.max_connections := 1; v_prop.interface_type := DBMS_MGWADM.JMS_TOPIC_CONNECTION; v_prop.username := 'mqm'; v_prop.password := 'mqm'; v_prop.hostname := 'myhost.mydomain'; v_prop.port := 1414; v_prop.channel := 'mychannel'; v_prop.queue_manager := 'my.queue.manager'; v_prop.outbound_log_queue := 'mylogtopic' -- Specify a WebSphere MQ durable subscriber queue to be used with the -- log topic. v_options := sys.mgw_properties( sys.mgw_property('MQ_JMSDurSubQueue', 'myDSQueue')); DBMS_MGWADM.CREATE_MSGSYSTEM_LINK( linkname => 'mqjmslink', agent_name => 'myagent', properties => v_prop, options => v_options ); END;
19.3.3 SSLを使用するためのWebSphere MQリンクの作成
メッセージ・ゲートウェイでは、IBM WebSphere MQとWebSphere MQのJMS接続においてSSLをサポートしています。この項では、WebSphere MQ Base JavaリンクでSSLを使用できるようにメッセージ・ゲートウェイを構成する方法を説明します。同じ情報をWebSphere MQのJMSリンクにも適用できます。メッセージ・ゲートウェイの構成に関しては違いはありません。
WebSphere MQ接続にSSLを使用するには、次のものが必要です。
-
SSLを使用するように構成されたWebSphere MQチャネル。
-
トラスト・ストア・ファイルおよびキーストア・ファイル(オプション)は、メッセージ・ゲートウェイ・エージェントのプロセスにアクセス可能な場所に存在します。Oracle RAC環境では、これらのファイルは、同じパス指定を使用してメッセージ・ゲートウェイ・エージェントのプロセスが実行される可能性のある、すべてのインスタンスに対してアクセス可能である必要があります。
-
DBMS_MGWADM
.CREATE_MSGSYSTEM_LINK
を使用して、必要なSSL関連リンク・オプションでWebSphere MQリンクを作成します。少なくとも、チャネルで使用されるSSL暗号スイートを指定するように、MQ_SSLCIPHERSUITE
プロパティを設定する必要があります。 -
DBMS_MGWADM
.SET_OPTION
を使用して、そのリンクに関連付けられているメッセージ・ゲートウェイ・エージェント用に特定のJSSE Javaプロパティを設定します。
JSEE関連プロパティ
-
j
ava.net.ssl.keyStore
このプロパティは、キーストアの場所を指定するために使用されます。キーストアは、認証およびデータ整合性など、様々な目的で使用されるキー・マテリアルのデータベースです。
-
java.net.ssl.keyStorePassword
このプロパティは、キーストアのパスワードを指定するために使用されます。このパスワードは、キーストアへのアクセス前に、キーストアに含まれているデータの整合性を確認するために使用されます。
-
j
ava.net.ssl.trustStore
このプロパティは、トラスト・ストアの場所を指定するために使用されます。トラスト・ストアは、どのクライアントおよびサーバーが信頼できるか、判断するために使用されるキーストアです。
-
java.net.ssl.trustStorePassword
このプロパティは、トラスト・ストアのパスワードを指定するために使用されます。このパスワードは、トラスト・ストアへのアクセス前に、キーストアに含まれているデータの整合性を確認するために使用されます。
java
.net
.ssl
.keyStore
およびjava
.net
.ssl
.keyStorePassword
プロパティは、WebSphere MQチャネルがSSLクライアント認証を使用するように構成されている場合のみに必要です。
例19-9では、SSL_RSA_WITH_RC4_128_MD5
暗号スイートを使用して、WebSphere MQ Base JavaリンクmqssllinkでSSL接続を使用するよう構成します。リンクに関連付けられたメッセージ・ゲートウェイ・エージェントDEFAULT_AGENT
にキーストアおよびトラストストアの両方のJavaプロパティを構成できるよう、チャネルがSSLクライアント認証用に構成されていると仮定しています。
DBMS_MGWADM
.SET_OPTION
によって設定されるJavaプロパティはエージェントの初回起動時にのみ設定されるため、この構成は、メッセージ・ゲートウェイ・エージェントの停止時に実行される必要があります。構成時にエージェントが実行中の場合は、エージェントを停止し、SSL接続の使用前に再起動する必要があります。
例19-9 SSLのためのWebSphere MQ Base Javaリンクの構成
DECLARE v_options sys.mgw_properties; v_prop sys.mgw_mqseries_properties; v_agent varchar2(30) := 'default_agent'; BEGIN v_prop := sys.mgw_mqseries_properties.construct(); v_prop.interface_type := DBMS_MGWADM.MQSERIES_BASE_JAVA_INTERFACE; v_prop.max_connections := 1; v_prop.username := 'mqm'; v_prop.password := 'mqm'; v_prop.hostname := 'myhost.mydomain'; v_prop.port := 1414; v_prop.channel := 'mysslchannel'; v_prop.queue_manager := 'my.queue.manager'; v_prop.outbound_log_queue := 'mylogq'; -- specify the SSL ciphersuite v_options := sys.mgw_properties( sys.mgw_property('MQ_SSLCIPHERSUITE','SSL_RSA_WITH_RC4_128_MD5') ); -- create the MQSeries link DBMS_MGWADM.CREATE_MSGSYSTEM_LINK(linkname => 'mqssllink', agent_name => v_agent, properties => v_prop, options => v_options); -- set Java properties for the agent that specify the JSSE security -- properties for the keystore and truststore; the paths will be -- saved as cleartext and the passwords encrypted DBMS_MGWADM.SET_OPTION(target_type => DBMS_MGWADM.AGENT_JAVA_PROP, target_name => v_agent, option_name => 'javax.net.ssl.keyStore', option_value => '/tmp/mq_ssl/key.jks', encrypted => false); DBMS_MGWADM.SET_OPTION(target_type => DBMS_MGWADM.AGENT_JAVA_PROP, target_name => v_agent, option_name => 'javax.net.ssl.keyStorePassword', option_value => 'welcome', encrypted => true); DBMS_MGWADM.SET_OPTION(target_type => DBMS_MGWADM.AGENT_JAVA_PROP, target_name => v_agent, option_name => 'javax.net.ssl.trustStore', option_value => '/tmp/mq_ssl/trust.jks', encrypted => false); DBMS_MGWADM.SET_OPTION(target_type => DBMS_MGWADM.AGENT_JAVA_PROP, target_name => v_agent, option_name => 'javax.net.ssl.trustStorePassword', option_value => 'welcome', encrypted => true); END;
19.3.4 TIB/Rendezvousリンクの作成
TIB/Rendezvousリンクは、DBMS_MGWADM.CREATE_MSGSYSTEM_LINK
をコールして作成します。TibrvRvdTransport
型の転送を作成するための3つのパラメータ(service
、network
およびdaemon
)を指定します。
TIB/Rendezvousメッセージ・システム・リンクには、伝播ログ・キューは必要ありません。ログ情報はメモリーに格納されます。したがって、メッセージ・ゲートウェイは最大1回のメッセージ配信のみを保証できます。
例19-10では、ローカル・コンピュータ上でrvd
デーモンに接続するrvlink
という名前のTIB/Rendezvousリンクを構成します。リンクに対してエージェント名は指定されず、メッセージ・ゲートウェイのデフォルトのエージェント(DEFAULT_AGENT
)は、リンクおよびそのリンクを使用するすべての伝播ジョブを処理する必要があります。
関連項目:
例19-10 TIB/Rendezvousリンクの構成
DECLARE v_options sys.mgw_properties; v_prop sys.mgw_tibrv_properties; BEGIN v_prop := sys.mgw_tibrv_properties.construct(); DBMS_MGWADM.CREATE_MSGSYSTEM_LINK(linkname => 'rvlink', properties => v_prop); END;
19.3.5 メッセージ・システム・リンクの変更
一部のリンク情報は、リンクの作成後にDBMS_MGWADM.ALTER_MSGSYSTEM_LINK
を使用して変更できます。メッセージ・ゲートウェイ・エージェントを実行中または停止中でもリンク情報を変更できます。例19-11では、リンクmqlink
を変更して、max_connections
プロパティを変更します。
関連項目:
メッセージ・ゲートウェイ・エージェントを実行中の変更に関する制限については、「構成プロパティ」を参照してください。
例19-11 WebSphere MQリンクの変更
DECLARE v_options sys.mgw_properties; v_prop sys.mgw_mqseries_properties; BEGIN -- use alter_construct() for initialization v_prop := sys.mgw_mqseries_properties.alter_construct(); v_prop.max_connections := 2; DBMS_MGWADM.ALTER_MSGSYSTEM_LINK( linkname => 'mqlink', properties => v_prop); END;
19.3.6 メッセージ・システム・リンクの削除
メッセージ・ゲートウェイのリンクに関連付けられたすべての登録済キューがすでに削除されている場合のみ、Oracle以外のメッセージ・システムへのメッセージ・ゲートウェイのリンクをDBMS_MGWADM.REMOVE_MSGSYSTEM_LINK
で削除できます。メッセージ・ゲートウェイ・エージェントを実行中または停止中でもリンクを削除できます。例19-12では、リンクmqlink
を削除します。
例19-12 メッセージ・ゲートウェイのリンクの削除
BEGIN dbms_mgwadm.remove_msgsystem_link(linkname =>'mqlink'); END;
19.3.7 メッセージ・システム・リンクのビュー
MGW_LINKS
ビューで作成されたリンクを確認できます。例19-13で示されているように、名前とリンク・タイプが表示されます。
例19-14に示したように、MGW_MQSERIES_LINK
ビューとMGW_TIBRV_LINKS
ビューを使用して、メッセージ・システムの型固有の構成情報をチェックできます。
例19-13 すべてのメッセージ・ゲートウェイのリンクのリスト
SQL> select link_name, link_type from MGW_LINKS; LINK_NAME LINK_TYPE ------------------------ MQLINK MQSERIES RVLINK TIBRV
例19-14 メッセージ・システム・リンクの構成情報のチェック
SQL> select link_name, queue_manager, channel, hostname from mgw_mqseries_links; LINK_NAME QUEUE_MANAGER CHANNEL HOSTNAME ---------------------------------------------------------- MQLINK my.queue.manager mychannel myhost.mydomain SQL> select link_name, service, network, daemon from mgw_tibrv_links; LINK_NAME SERVICE NETWORK DAEMON ----------------------------------------------------- RVLINK
19.4 Oracle以外のメッセージ・システムのキューの構成
ソース・キュー、宛先キューまたは例外キューとして伝播に関連しているすべてのOracle以外のメッセージ・システム・キューは、メッセージ・ゲートウェイ管理インタフェースを介して登録する必要があります。伝播に関連するOracle Database Advanced Queuingキューを登録する必要はありません。
この項の内容は次のとおりです。
19.4.1 Oracle以外のキューの登録
Oracle以外のキューは、DBMS_MGWADM.REGISTER_FOREIGN_QUEUE
を使用して登録できます。Oracle以外のキューを登録すると、メッセージ・ゲートウェイ・エージェントがキューにアクセスするための情報が提供されます。ただし、Oracle以外のメッセージ・システムの物理的キューは作成されません。物理的キューは、メッセージ・ゲートウェイ・エージェントがキューにアクセスする前に、Oracle以外のメッセージ・システムの管理インタフェースを使用して作成する必要があります。
次の情報を使用して、Oracle以外のキューを登録します。
-
キューにアクセスする際に使用するメッセージ・システム・リンク名
-
キューの固有名(Oracle以外のメッセージ・システム内の名前)
-
キューのドメイン
-
Point-to-Pointキューの
DBMS_MGWADM.DOMAIN_QUEUE
-
パブリッシュ・サブスクライブ・キューの
DBMS_MGWADM.DOMAIN_TOPIC
-
-
Oracle以外のメッセージ・システム固有のオプション
これらのオプションは、{名前, 値}の組(いずれも文字列)の集合です。
関連項目:
例19-15は、メッセージ・ゲートウェイ・キューdestq
としてWebSphere MQ Base Javaキューmy_mq_queue
を登録する方法を示したものです。
例19-15 WebSphere MQ Base Javaキューの登録
BEGIN DBMS_MGWADM.REGISTER_FOREIGN_QUEUE( name => 'destq', linkname => 'mqlink', provider_queue => 'my_mq_queue', domain => dbms_mgwadm.DOMAIN_QUEUE); END;
19.4.1.1 WebSphere MQ Base Javaキューの登録
WebSphere MQではPoint-to-Pointキューのみがサポートされているため、ドメインはDBMS_MGWADM.DOMAIN_QUEUE
またはNULLである必要があります。
19.4.1.2 WebSphere MQ JMSキューまたはトピックの登録
WebSphere MQ JMSキューを登録する際は、ドメインはDBMS_MGWADM.DOMAIN_QUEUE
であり、linkname
パラメータはWebSphere MQ JMS統一リンクまたはキュー・リンクを参照する必要があります。
WebSphere MQ JMSトピックを登録する際は、ドメインはDBMS_MGWADM.DOMAIN_TOPIC
であり、linkname
パラメータはWebSphere MQ JMS統一リンクまたはトピック・リンクを参照する必要があります。伝播ソースとして使用されるWebSphere MQ JMSトピックのprovider_queue
には、ワイルドカードを含めることができます。ワイルドカード構文については、WebSphere MQドキュメントを参照してください。
19.4.1.3 TIB/Rendezvousサブジェクトの登録
TIB/Rendezvousサブジェクトをメッセージ・ゲートウェイに登録する際には、provider_queue
パラメータでTIB/Rendezvousサブジェクト名を指定します。登録済TIB/Rendezvousキューのドメインは、DBMS_MGWADM.DOMAIN_TOPIC
またはNULLである必要があります。
登録済のTIB/Rendezvousキューでprovider_queue
がワイルドカード・サブジェクト名に設定されている場合、インバウンド伝播の伝播ソース・キューとして使用できます。ワイルドカード・サブジェクト名を持つキューを伝播宛先キューまたは例外キューに使用することは避けてください。TIB/Rendezvousで記載されているように、ワイルドカード・サブジェクトにメッセージを送信すると、予期しない動作を引き起こす可能性があります。ただし、メッセージ・ゲートウェイまたはTIB/Rendezvousではこれを阻止しません。
19.4.2 Oracle以外のキューの登録解除
Oracle以外のキューは、それを参照する伝播ジョブが存在しない場合のみ、DBMS_MGWADM.UNREGISTER_FOREIGN_QUEUE
で登録を解除できます。
例19-16では、リンクmqlink
のキューdestq
の登録を解除します。
例19-16 Oracle以外のキューの登録解除
BEGIN DBMS_MGWADM.UNREGISTER_FOREIGN_QUEUE(name =>'destq', linkname=>'mqlink'); END;
19.4.3 Oracle以外の登録済キューのビュー
例19-17に示すとおりMGW_FOREIGN_QUEUES
ビューを使用して、どのOracle以外のキューが登録され、それぞれがどのリンクを使用しているかをチェックできます。
例19-17 登録済キューの確認
SELECT name, link_name, provider_queue FROM MGW_FOREIGN_QUEUES; NAME LINK_NAME PROVIDER_QUEUE ------------------------------------ DESTQ MQLINK my_mq_queue
19.5 Oracle Messaging Gatewayの伝播ジョブの構成
Oracle Database AQキューとOracle以外のメッセージ・システム・キュー間でメッセージを伝播するには伝播ジョブが必要です。各伝播ジョブには、一意の伝播型、ソースおよび宛先の3つが含まれます。
伝播ジョブを作成し、JMS宛先間でメッセージを伝播できます。伝播ジョブを作成し、JMS以外のキュー間でメッセージを伝播できます。メッセージ・ゲートウェイでは、JMS宛先とJMS以外のキュー間におけるメッセージの伝播はサポートされていません。
この項の内容は次のとおりです。
19.5.1 伝播ジョブの概要
伝播ジョブは、伝播されるメッセージおよびその方法を指定します。
メッセージ・ゲートウェイでは、双方向のメッセージ伝播が可能です。発信伝播では、メッセージがOracle Database Advanced QueuingからOracle以外のメッセージ・システムに移動されます。着信伝播では、メッセージがOracle以外のメッセージ・システムからOracle Database Advanced Queuingに移動されます。
伝播ソースがPoint-to-Pointキューの場合は、メッセージ・ゲートウェイ・エージェントによってキュー内のすべてのメッセージがソース・キューから宛先に移動されます。伝播ソースがトピック(パブリッシュ・サブスクライブ)の場合は、メッセージ・ゲートウェイ・エージェントによって伝播ソース・キューのサブスクライバがメッセージ・システム上に作成されます。エージェントでは、サブスクライバの作成後、パブリッシュされたすべてのメッセージがソース・キューに移動されるだけです。
メッセージを伝播する際に、メッセージ・ゲートウェイ・エージェントによって、メッセージがソース・メッセージ・システムのフォーマットから宛先メッセージ・システムのフォーマットに変換されます。ユーザーは、メッセージ変換を指定することによってメッセージ変換をカスタマイズできます。メッセージ変換に失敗すると、例外キューが指定されている場合は、エージェントがサブスクライバに伝播できるようにメッセージは例外キューに移動されます。
メッセージ・ゲートウェイの例外キューとOracle Database Advanced Queuingの例外キューは異なります。メッセージ変換に失敗すると、メッセージはメッセージ・ゲートウェイによってメッセージ・ゲートウェイの例外キューに移動されます。メッセージに対してMAX_RETRIES
デキューを試行後、メッセージはOracle Database Advanced QueuingによってOracle Database Advanced Queuingの例外キューに移動されます。
Oracle Database Advanced Queuingの例外キューに移動されたメッセージは、関連するメッセージ・ゲートウェイの伝播ジョブ上で回復不能な障害を発生します。この問題を避けるために、メッセージ・ゲートウェイの伝播ジョブの伝播ソースとして使用されるすべてのOracle Database Advanced QueuingのキューのMAX_RETRIES
パラメータは、16を超える値に設定する必要があります。
伝播ソース・キューのメッセージ・システムがメッセージ選択をサポートしている場合は、伝播サブスクライバにメッセージ選択ルールを指定できます。メッセージ・セレクタの条件を満たすメッセージのみが伝播されます。
JMSメッセージの配信モードおよびTIB/Rendezvousのキュー・ポリシーに対するオプションなど、伝播ジョブ・オプションを指定することにより、ユーザーはメッセージの伝播方法を制御できます。
MGW_JOBS
ビューを使用して、メッセージ・ゲートウェイの伝播ジョブの構成およびステータスを確認できます。
19.5.2 Oracle Messaging Gatewayの伝播ジョブの作成
メッセージ・ゲートウェイの伝播ジョブは、DBMS_MGWADM
.CREATE_JOB
を使用して作成されます。
JMS伝播以外の伝播ソースが、Oracle Database AQキューである場合、キューはシングル・コンシューマ・キューか、マルチ・コンシューマ・キューのいずれかです。マルチ・コンシューマ・キューの場合、メッセージ・ゲートウェイは、DBMS_MGWADM
.CREATE_JOB
がコールされると、伝播ジョブのjob_name
に対応するOracle Database AQサブスクライバのMGW_job_name
を作成します。
伝播ソースが、Oracle Java Message Service (Oracle JMS)トピックまたはWebSphere MQ JMSトピックなどのJMSトピックである場合は、メッセージ・ゲートウェイ・エージェントによってソース・メッセージ・システムのトピックに対してJMSサブスクライバMGW_job_name
が作成されます。エージェントを実行中でない場合は、エージェントを再起動するまでサブスクライバは作成されません。
伝播ソースがキューの場合、そのキューを伝播ソースとして使用して伝播ジョブを1つのみ作成できます。伝播ソースがトピックの場合は、そのトピックを各伝播ジョブがメッセージ・システム内のトピックに対応する固有のサブスクライバを有する伝播ソースとして使用して、複数の伝播ジョブを設定できます。
例19-18では、メッセージ・ゲートウェイの伝播ジョブjob_aq2mq
を作成します。
注意:
WebSphere MQ JMSトピックが伝播ジョブに関連していて、リンクのインタフェース型がDBMS_MGWADM.JMS_TOPIC_CONNECTION
の場合、永続サブスクライバMGL_
subscriber_id
はログ・トピックに対して作成されます。メッセージ・ゲートウェイの伝播ジョブが正常に削除されると、永続サブスクライバは削除されます。
例19-18 メッセージ・ゲートウェイ伝播ジョブの作成
BEGIN DBMS_MGWADM.CREATE_JOB( job_name => 'job_aq2mq', propagation_type => DBMS_MGWADM.OUTBOUND_PROPAGATION, source => 'mquser.srcq', destination => 'deqq@mqlink'); END;
19.5.3 伝播ジョブの有効化および無効化
伝播ジョブは、DBMS_MGWADM
.CREATE_JOB
による作成時に最初に有効化または無効化することができます。デフォルトでは、作成時にジョブは有効化されます。伝播ジョブを有効化するにはDBMS_MGWADM
.ENABLE_JOB
、無効化するにはDBMS_MGWADM
.DISABLE_JOB
を使用します。ジョブが無効化されている場合、いずれの伝播処理も発生しません。
例19-19では、伝播ジョブjob_aq2mq
の伝播を有効化します。
例19-20では、伝播ジョブjob_aq2mq
の伝播を無効化します。
例19-19 メッセージ・ゲートウェイ伝播ジョブの有効化
BEGIN DBMS_MGWADM.ENABLE_JOB(job_name => 'job_aq2mq'); END;
例19-20 メッセージ・ゲートウェイ伝播ジョブの無効化
BEGIN DBMS_MGWADM.DISABLE_JOB(job_name => 'job_aq2mq'); END;
19.5.4 伝播ジョブのリセット
伝播ジョブに問題が発生した場合、メッセージ・ゲートウェイ・エージェントでは伝播ジョブを停止する前に、指数バックオフ・スキームで失敗した操作が最大16回再試行されます。DBMS_MGWADM.RESET_JOB
を使用すると、失敗回数をゼロにリセットし、エージェントで失敗した操作をただちに再試行できます。
例19-21では、伝播ジョブjob_aq2mq
の失敗回数をリセットします。
例19-21 伝播ジョブのリセット
BEGIN DBMS_MGWADM.RESET_JOB (job_name => 'job_aq2mq'); END;
19.5.5 伝播ジョブの変更
伝播ジョブが作成されたら、DBMS_MGWADM
.ALTER_JOB
を使用して、そのジョブの選択ルール、変換、例外キュー、ジョブ・オプションおよびポーリング間隔を変更できます。メッセージ・ゲートウェイ・エージェントを実行中または停止中でもジョブを変更できます。
例19-22では、伝播ジョブの例外キューを追加します。
例19-23では、伝播ジョブのポーリング間隔を変更します。ポーリング間隔によって、エージェントが伝播ソース・キュー内で使用可能なメッセージを検出する速度が決まります。デフォルトのポーリング間隔は5秒、またはメッセージ・ゲートウェイの初期化ファイル内のoracle
.mgw
.polling_interval
で設定されている値です。
例19-22 例外キューの追加による伝播ジョブの変更
BEGIN DBMS_MGWADM.ALTER_JOB( job_name => 'job_aq2mq', exception_queue => 'mgwuser.my_ex_queue'); END;
例19-23 ポーリンク間隔変更による伝播ジョブの変更
BEGIN DBMS_MGWADM.ALTER_JOB( job_name => 'job_aq2mq', poll_interval => 2); END;
19.5.6 伝播ジョブの削除
メッセージ・ゲートウェイの伝播ジョブは、DBMS_MGWADM
.REMOVE_JOB
をコールすることによって削除できます。
メッセージ・ゲートウェイ構成から伝播ジョブが削除される前に、メッセージ・ゲートウェイは、次のクリーンアップを実行します。
-
メッセージ・ゲートウェイによって作成された関連サブスクライバの、メッセージ・システムからの削除
-
削除対象のジョブに関する伝播ログ記録の、ログ・キューからの削除
次の場合には、メッセージ・ゲートウェイはクリーン・アップに失敗することがあります。
-
メッセージ・ゲートウェイ・エージェントが実行されていない
-
Oracle以外のメッセージ・システムが実行されていない
-
メッセージ・ゲートウェイ・エージェントが、ソースまたは宛先メッセージ・システムと対話できない
いずれかの理由によりメッセージ・ゲートウェイがクリーン・アップに失敗した場合、削除対象の伝播ジョブはDELETE_PENDING
状態に置かれます。次の場合、メッセージ・ゲートウェイ・エージェントは、DELETE_PENDING
状態にある伝播ジョブのクリーンアップを試行します。
-
DBMS_MGWADM
.REMOVE_JOB
がコールされると、メッセージ・ゲートウェイ・エージェントが実行されます。 -
メッセージ・ゲートウェイ・エージェントが起動し、
DELETE_PENDING
状態の伝播ジョブを検出します。
DBMS_MGWADM
.REMOVE_JOB
には、DELETE_PENDING
状態にしなくても、メッセージ・ゲートウェイ構成からの伝播ジョブの強制的な削除を可能にする強制パラメータが含まれています。これは、クリーンアップが失敗した場合、またはメッセージ・ゲートウェイ・エージェントが実行中でないときに伝播ジョブを削除する場合に便利です。
伝播ジョブを強制的に削除すると、使用されなくなったログ記録がログ・キュー内に、サブスクリプションがメッセージ・システム内に残り、不要なメッセージが蓄積されることになります。DBMS_MGWADM
.REMOVE_JOB
には、可能なかぎり強制オプションを使用しないことをお薦めします。
例19-24では、強制しない方法で伝播ジョブを削除します。
例19-24 伝播ジョブの削除
BEGIN DBMS_MGWADM.REMOVE_JOB (job_name => 'job_aq2mq'); END;
19.6 伝播ジョブ、サブスクライバおよびスケジュール
サブプログラムは、伝播ジョブの作成および管理を簡素化するDBMS_MGWADM
パッケージの一部として提供されます。これらのサブプログラムを使用して、前のリリースのような非結合サブスクライバおよびスケジュールではなく、伝播ジョブを構成できます。伝播ジョブ・プロシージャを使用することをお薦めしますが、下位互換性を保つために、サブスクライバ・プロシージャおよびスケジュール・プロシージャもサポートされています。
表19-1は、メッセージ・ゲートウェイの伝播ジョブ・プロシージャ、および置換するサブスクライバ・プロシージャまたはスケジュール・プロシージャ(あるいはその両方)を示したものです。すべてのプロシージャは、DBMS_MGWADM
パッケージからのものです。
表19-1 メッセージ・ゲートウェイ伝播ジョブのサブプログラム
ジョブ・プロシージャ | サブスクライバ、スケジュール・プロシージャを置換します。 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
この項では、次の項目について説明します。
19.6.1 伝播ジョブ、サブスクライバおよびスケジュールのインタフェースの互換性
新しい形式のジョブと古い形式のジョブという、2つのタイプの伝播ジョブを作成できます。新しい形式のジョブは、DBMS_MGWADM
.CREATE_JOB
を使用して作成されます。古い形式のジョブは、同じ{propagation_type
、source
、destination
}の3つを使用してDBMS_MGWADM
.ADD_SUBSCRIBER
およびDBMS_MGWADM
.SCHEDULE_PROPAGATION
をコールすることによって作成されます。スケジュールが一致しないサブスクライバ、またはサブスクライバが一致しないスケジュールは、伝播ジョブとしてみなされません。
新しい形式のジョブの場合、ジョブ名は、サブスクライバIDとスケジュールIDの両方として機能します。古い形式のジョブの場合は、ジョブ名としてサブスクライバIDが使用されます。
古い形式の伝播ジョブには、伝播ジョブ・サブプログラムと、サブスクライバ・サブプログラムまたはスケジュール・サブプログラムの両方を使用できます。伝播ジョブの作成および管理には、ジョブ・サブプログラムを使用することをお薦めします。伝播ジョブは、一致しないサブスクライバまたはスケジュールでは構成されないため、これらに対してジョブ・サブプログラムは使用できません。
新しい形式の伝播ジョブには、新しいジョブ・サブプログラムのみを使用できます。新しい形式のジョブで、サブスクライバまたはスケジューラ・プロシージャをコールしようとすると、エラーが発生します。
DBMS_MGWADM
.REMOVE_JOB
以外、古い形式のジョブ用のジョブ・サブプログラムのコールは簡単で、対応するサブスクライバまたはスケジュール・サブプログラムのコールと同様、効率的な結果が得られます。今後、なんらかの制限がある可能性もありますが、現在はいずれの制限もありません。
DBMS_MGWADM
.REMOVE_JOB
プロシージャは、新旧の両方の形式のジョブを削除するために使用できます。強制的および非強制的な削除がサポートされています。非強制的な削除の実行時に、メッセージ・ゲートウェイ・エージェントが実行中でない場合、ジョブには削除保留中のフラグが付き、基になるサブスクライバまたはスケジュールのいずれも削除されません。エージェントが再起動し、クリーンアップ作業または強制的なDBMS_MGWADM
.REMOVE_JOB
が実行されると、ジョブ(サブスクライバとスケジュール・ペア)が削除されます。サブスクライバとスケジュールのペアが同時に削除されるようにするため、DBMS_MGWADM
.REMOVE_JOB
を最初にコールした後で、古い形式のジョブ用のDBMS_MGWADM
.REMOVE_SUBSCRIBER
またはDBMS_MGWADM
.UNSCHEDULE_PROPAGATION
のコールを試行すると、エラーが発生します。
DBMS_MGWADM
.REMOVE_JOB
がジョブにコールされ、削除保留としてフラグ付けされると、DBMS_MGWADM
.REMOVE_JOB
以外のすべてのジョブ・プロシージャが、新しい形式および古い形式のジョブの両方に関して失敗します。さらに、伝播ジョブが古い形式のジョブであった場合、すべてのサブスクライバおよびスケジュール・サブプログラムも失敗します。DBMS_MGWADM
.REMOVE_SUBSCRIBER
およびDBMS_MGWADM
.UNSCHEDULE_PROPAGATION
は、DBMS_MGWADM
.REMOVE_JOB
がそのジョブに対してコールされていないかぎり、古い形式のジョブに使用できます。DBMS_MGWADM
.UNSCHEDULE_PROPAGATION
が古い形式のジョブに対してコールされた場合、スケジュールが即時削除され、伝播ジョブでなくなり、サブスクライバの削除にはDBMS_MGWADM
.REMOVE_SUSCRIBER
の使用が必要になります。DBMS_MGWADM
.REMOVE_SUBSCRIBER
が古い形式のジョブに対してコールされた場合、サブスクライバが存在するかぎり、ユーザーは続けてDBMS_MGWADM
.REMOVE_JOB
をコールできます。
19.6.2 伝播ジョブ、サブスクライバ、スケジューラのビュー
MGW_JOBS
ビューには、現在の伝播ジョブ、新旧両方の形式のジョブに関する情報、およびMGW_SUBSCRIBERS
ビューとMGW_SCHEDULES
ビューで表示されるすべての関連情報が表示されます。一致しないサブスクライバまたはスケジュールは伝播ジョブを構成せず、MGW_JOBS
ビューには表示されないため、これらの検索には引き続きMGW_SUBSCRIBERS
ビューおよびMGW_SCHEDULES
ビューが役立ちます。
19.6.3 伝播ソースとしてのシングル・コンシューマ・キュー
メッセージ・ゲートウェイを使用して、Oracle Database AQのマルチ・コンシューマ・キューまたはシングル・コンシューマ・キューを、DBMS_MGWADM
.CREATE_JOB
により作成される新しい形式の発信ジョブの伝播ソースにすることができます。古い形式の発信ジョブの伝播ソースには、マルチ・コンシューマ・キューを使用する必要があります。管理者がDBMS_MGWADM
.ADD_SUBSCRIBER
のコールを試行し、ソースがシングル・コンシューマ・キューである場合、エラーが発生します。
伝播ソースがシングル・コンシューマ・キューの場合、システム固有(JMS以外)の発信伝播について、Oracle Database AQのデキュー条件はサポートされていません。
19.7 構成プロパティ
この項では、メッセージ・ゲートウェイのリンク、外部キューおよび伝播ジョブに関連する基本的なプロパティとオプションのプロパティについて説明します。
この項の内容は次のとおりです。
19.7.1 WebSphere MQシステム・プロパティ
表19-2は、WebSphere MQメッセージ・リンクの基本的な構成プロパティをまとめたものです。この表は、SYS.MGW_MQSERIES_PROPERTIES
のオプションの(NULL
が可能な)プロパティ、変更可能なプロパティ、値が動的に変更可能なプロパティを示しています。
関連項目:
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のSYS.MGW_MQSERIES_PROPERTIES型に関する項
表19-2 WebSphere MQリンク・プロパティ
属性 | NULL | 値の変更 | 動的変更 |
---|---|---|---|
|
不可 |
不可 |
不可 |
|
可(1) |
不可 |
不可 |
|
可(1) |
不可 |
不可 |
|
可(1)、(6) |
可 |
不可 |
|
可(2) |
不可 |
不可 |
|
可(3) |
可 |
可 |
|
可 |
可 |
可 |
|
可 |
可 |
可 |
|
可(4) |
可(4) |
可 |
|
可(5) |
可(5) |
可 |
表19-2に関する注意
-
hostname
がNULL
の場合、portおよびchannelはNULL
である必要があります。hostnameがNULL
でない場合、portはNULL
以外である必要があります。hostnameがNULL
の場合は、WebSphere MQバインド接続が使用され、それ以外の場合はクライアント接続が使用されます。 -
interface_type
がNULL
の場合は、デフォルト値DBMS_MGWADM.MQSERIES_BASE_JAVA_INTERFACE
が使用されます。 -
max_connections
がNULL
の場合は、デフォルト値1
が使用されます。 -
リンクが着信伝播に使用されない場合は、属性
inbound_log_queue
にNULL
を設定できます。ログ・キューを変更できるのは、このリンクが着信伝播ジョブによって参照されない場合のみです。 -
リンクが発信伝播に使用されない場合は、属性
outbound_log_queue
にNULL
を設定できます。ログ・キューを変更できるのは、このリンクが発信伝播ジョブによって参照されない場合のみです。 -
クライアント・チャネル定義表(CCDT)が使用される場合、channel属性は、
NULL
である必要があります。CCDTは、MQ_ccdtURL
リンク・オプションを使用して指定できます。
表19-3は、WebSphere MQメッセージ・システムへのアクセスにWebSphere MQ Base Javaインタフェースが使用される場合にサポートされているオプションの構成プロパティをまとめたものです。表19-4は、WebSphere MQ JMSインタフェースが使用される場合にサポートされているオプションの構成プロパティをまとめたものです。それぞれの表は、プロパティ名、そのプロパティの適用場所、プロパティを変更できるかどうか、値を動的に変更可能かどうかを示しています。サポートされているのはこの表に示すプロパティのみで、その他のプロパティは無視されます。
表19-3 WebSphere MQ Base Javaのオプションの構成プロパティ
プロパティ名 | 使用対象 | 値の変更 | 動的変更 |
---|---|---|---|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
外部キュー |
不可 |
不可 |
|
ジョブ |
可 |
可 |
|
ジョブ |
可 |
可 |
表19-4 WebSphere MQ JMSのオプションの構成プロパティ
プロパティ名 | 使用対象 | 値の変更 | 動的変更 |
---|---|---|---|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
不可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
リンク |
可 |
不可 |
|
外部キュー |
不可 |
不可 |
|
外部キュー |
不可 |
不可 |
|
外部キュー |
不可 |
不可 |
|
ジョブ |
可 |
可 |
|
ジョブ |
不可 |
不可 |
|
ジョブ |
可 |
可 |
|
ジョブ |
可 |
可 |
19.7.2 TIB/Rendezvousシステム・プロパティ
表19-5は、TIB/Rendezvousメッセージ・リンクの基本的な構成プロパティをまとめたものです。これは、SYS.MGW_TIBRV_PROPERTIES
のオプションの(NULL
が可能な)プロパティ、変更可能なプロパティ、値が動的に変更可能なプロパティを示しています。
関連項目:
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のSYS.MGW_TIBRV_PROPERTIES型に関する項
表19-5 TIB/Rendezvousリンク・プロパティ
属性 | NULL | 値の変更 | 動的変更 |
---|---|---|---|
|
可(1) |
不可 |
不可 |
|
可(1) |
不可 |
不可 |
|
可(1) |
不可 |
不可 |
|
可(2) |
不可 |
不可 |
|
可(2) |
不可 |
不可 |
表19-5に関する注意:
-
service
、daemon
またはnetwork
がNULL
の場合は、システムのデフォルト値が使用されます。 -
cm_name
およびcm_ledger
属性は、TIB/Rendezvousの証明済メッセージがサポートされる将来の使用に備えて確保されています。現在、TIB/Rendezvousリンクの構成時には、これらのパラメータにNULL
を指定する必要があります。
表19-6は、TIB/Rendezvousメッセージ・システムが使用される場合にサポートされているオプションの構成プロパティをまとめたものです。この表は、プロパティ名、そのプロパティの適用場所、プロパティを変更できるかどうか、変更可能な場合は値が動的に変更可能かどうかを示しています。サポートされているのはこの表に示すプロパティのみで、その他のプロパティは無視されます。
表19-6 TIB/Rendezvousのオプション・プロパティ
プロパティ名 | 使用対象 | 値の変更 | 動的変更 |
---|---|---|---|
ジョブ |
可 |
可 |
|
ジョブ |
可 |
可 |
|
ジョブ |
可 |
可 |
|
ジョブ |
可 |
不可 |
|
ジョブ |
可 |
不可 |
|
ジョブ |
可 |
不可 |
19.7.3 オプションのリンクの構成プロパティ
この項では、DBMS_MGWADM.CREATE_MSGSYSTEM_LINK
およびDBMS_MGWADM.ALTER_MSGSYSTEM_LINK
のoptions
パラメータを使用して指定できるオプションのリンク・プロパティについて説明します。それぞれの項目には、そのプロパティを使用できるメッセージ・システムも示されています。
- MQ_BrokerControlQueue
-
このプロパティはWebSphere MQ JMSで使用されます。ブローカの制御キューの名前を指定し、WebSphere MQ JMS管理ツールの
BROKERCONQ
プロパティに対応します。WebSphere MQのデフォルトはSYSTEM.BROKER.CONTROL.QUEUE
です。 - MQ_BrokerPubQueue
-
このプロパティはWebSphere MQ JMSで使用されます。ブローカのパブリック・キューの名前を指定し、WebSphere MQ JMS管理ツールの
BROKERPUBQ
プロパティに対応します。WebSphere MQのデフォルトはSYSTEM.BROKER.DEFAULT.STREAM
です。 - MQ_BrokerQueueManager
-
このプロパティはWebSphere MQ JMSで使用されます。ブローカのキュー・マネージャの名前を指定し、WebSphere MQ管理ツールの
BROKERQMGR
プロパティに対応します。設定されていない場合、デフォルトは使用されません。 - MQ_BrokerVersion
-
このプロパティはWebSphere MQ JMSで使用されます。ブローカのバージョン番号を指定し、WebSphere MQ JMS管理ツールの
BROKERVER
プロパティに対応します。WebSphere MQのデフォルトは0
です。 - MQ_ccdtUrl
-
このプロパティはWebSphere MQ Base JavaおよびWebSphere MQ JMSで使用されます。使用するクライアント・チャネル定義表(CCDT)のURL文字列を指定します。設定されていない場合、CCDTは使用されません。CCDTを使用する場合、
SYS
.MGW_MQSERIES_PROPERTIES
.channel
リンク・プロパティはNULL
である必要があります。 - MQ_ccsid
-
このプロパティはWebSphere MQ Base JavaおよびWebSphere MQ JMSで使用されます。WebSphere MQメッセージ・ヘッダーの情報を変換するために使用するキャラクタ・セット識別子を指定します。これには、記述的文字列ではなく、キャラクタ・セットの整数値(
819
など)を使用します。設定されていない場合、WebSphere MQのデフォルトのキャラクタ・セット819
が使用されます。 - MQ_JmsDurSubQueue
-
このプロパティはWebSphere MQ JMSで使用されます。WebSphere MQ JMSのトピック・リンクにのみ適用されます。
SYS.MGW_MQSERIES_PROPERITES
の属性inbound_log_queue
およびoutbound_log_queue
は、伝播のロギングに使用されるWebSphere MQ JMSトピックの名前を指定します。このプロパティは、ログ・トピックのサブスクライバが永続サブスクリプション・メッセージを取り出すWebSphere MQキューの名前を指定します。WebSphere MQのデフォルト・キューはSYSTEM.JMS.D.SUBSCRIBER.QUEUE
です。 - MQ_PubAckInterval
-
このプロパティはWebSphere MQ JMSで使用されます。ブローカからの確認を必要とするパブリッシュ・リクエスト間の間隔をメッセージ数で指定し、WebSphere MQ JMS管理ツールの
PUBACKINT
プロパティに対応します。WebSphere MQのデフォルトは25
です。 - MQ_ReceiveExit
-
このプロパティはWebSphere MQ Base JavaおよびWebSphere MQ JMSで使用されます。これは
MQReceiveExit
インタフェースを実装するクラスの完全修飾Javaクラス名を指定します。このクラスは、メッセージ・ゲートウェイ・エージェントのCLASSPATH
に含まれている必要があります。デフォルトはありません。 - MQ_ReceiveExitInit
-
この初期化文字列はWebSphere MQ JMSで使用されます。WebSphere MQ JMSから
MQ_ReceiveExit
によって指定されるクラスのコンストラクタに渡され、WebSphere MQ JMS管理ツールのRECEXITINIT
プロパティに対応します。デフォルトはありません。 - MQ_SecurityExit
-
このプロパティはWebSphere MQ Base JavaおよびWebSphere MQ JMSで使用されます。これは
MQSecurityExit
インタフェースを実装するクラスの完全修飾Javaクラス名を指定します。このクラスは、メッセージ・ゲートウェイ・エージェントのCLASSPATH
に含まれている必要があります。デフォルトはありません。 - MQ_SecurityExitInit
-
この初期化文字列はWebSphere MQ JMSで使用されます。WebSphere MQ JMSから
MQ_SecurityExit
によって指定されるクラスのコンストラクタに渡され、WebSphere MQ JMS管理ツールのSECEXITINIT
プロパティに対応します。デフォルトはありません。 - MQ_SendExit
-
このプロパティはWebSphere MQ Base JavaおよびWebSphere MQ JMSで使用されます。これは
MQSendExit
インタフェースを実装するクラスの完全修飾Javaクラス名を指定します。このクラスは、メッセージ・ゲートウェイ・エージェントのCLASSPATH
に含まれている必要があります。デフォルトはありません。 - MQ_SendExitInit
-
この初期化文字列はWebSphere MQ JMSで使用されます。WebSphere MQ JMSから
MQ_SendExit
によって指定されるクラスのコンストラクタに渡されます。WebSphere MQ JMS管理ツールのSENDEXITINIT
プロパティに対応します。デフォルトはありません。 - MQ_SSLCipherSuite
-
このプロパティはWebSphere MQ Base JavaおよびWebSphere MQ JMSで使用されます。
SSL_RSA_WITH_RC4_128_MD5
のように、使用する暗号スイートを指定します。これはWebSphere MQのSSLCIPHERSUITE
管理プロパティに対応します。 - MQ_SSLCrl
-
このプロパティはWebSphere MQ JMSで使用されます。証明書失効リスト(CRL)の確認に使用できるLDAPサーバーのスペース区切りリストを指定します。設定されていない場合、CRLは確認されません。これはWebSphere MQの
SSLCRL
管理プロパティに対応します。このオプションはWebSphere MQ Base Javaではサポートされていません。CRLの確認が必要な場合、かわりにクライアント・チャネル定義表(CCDT)を使用する必要があります。 - MQ_SSLFipsRequired
-
このプロパティはWebSphere MQ Base JavaおよびWebSphere MQ JMSで使用されます。使用されている暗号スイートがIBM Java JSSE FIPSプロバイダ(IBMSJSSEFIPS)によってサポートされているかどうかを示します。この値は
TRUE
またはFALSE
のいずれかです。デフォルト値はFALSE
です。これはWebSphere MQのSSLFIPSREQUIRED
管理プロパティに対応します。 - MQ_SSLPeerName
-
このプロパティはWebSphere MQ Base JavaおよびWebSphere MQ JMSで使用されます。接続を確立するためにキュー・マネージャの証明書が一致する必要のある識別名(DN)のパターンを指定します。設定されていない場合、DNは確認されません。これはWebSphere MQの
SSLPEERNAME
管理プロパティに対応します。 - MQ_SSLResetCount
-
このプロパティはWebSphere MQ Base JavaおよびWebSphere MQ JMSで使用されます。秘密鍵が再ネゴシエートされるまでに送受信される合計バイト数を指定します。設定されていない場合、鍵は再ネゴシエートされません。これはWebSphere MQの
SSLRESETCOUNT
管理プロパティに対応します。
19.7.4 オプションの外部キューの構成プロパティ
この項では、DBMS_MGWADM
.REGISTER_FOREIGN_QUEUE
のoptions
パラメータを使用して指定できるオプションの外部キュー・プロパティについて説明します。それぞれの項目には、そのプロパティを使用できるメッセージ・システムも示されています。
- MQ_CharacterSet
-
このプロパティはWebSphere MQ JMSで使用されます。これはJMSキューまたはトピックへのアウトバウンド伝播にのみ使用されます。宛先に送信されるテキスト文字列のエンコードに使用されるキャラクタ・セットを指定します。これには、記述的文字列ではなく、キャラクタ・セットの整数値(
1208
など)を使用します。メッセージ・ゲートウェイで使用されるデフォルト値は1208
(UTF8)です。 - MQ_JmsDurSubQueue
-
このプロパティはWebSphere MQ JMSで使用されます。これは、このトピックのサブスクライバが永続サブスクリプション・メッセージを取り出すWebSphere MQキューの名前を表す文字列です。WebSphere MQ JMSのトピックにのみ適用されます。WebSphere MQのデフォルト・キューは
SYSTEM.JMS.D.SUBSCRIBER.QUEUE
です。 - MQ_JmsTargetClient
-
このプロパティはWebSphere MQ JMSで使用されます。これはJMSキューまたはトピックへのアウトバウンド伝播にのみ使用されます。サポートされている値は
TRUE
およびFALSE
です。TRUE
はWebSphere MQがメッセージをJMSメッセージとして保存することを示します。FALSE
は、JMS以外のアプリケーションがアクセスできるよう、WebSphere MQがメッセージを非JMSフォーマットで保存することを示します。デフォルトはTRUE
です。 - MQ_openOptions
-
このプロパティはWebSphere MQ Base Javaで使用されます。WebSphere MQ Base Java
MQQueueManager.accessQueue
メソッドのopenOptions
引数に使用される値を指定します。値は必要がありません。しかし、入力された場合は、メッセージ・ゲートウェイ・エージェントによってMQOO_OUTPUT
がエンキュー(put
)操作の指定された値に追加されます。デキュー(get
)操作にはMQOO_INPUT_SHARED
が追加されます。デフォルトは、エンキュー/put操作ではMQOO_OUTPUT
、デキュー/get操作ではMQOO_INPUT_SHARED
です。
19.7.5 オプションのジョブの構成プロパティ
この項では、オプションのパラメータのDBMS_MGWADM
.CREATE_JOB
およびDBMS_MGWADM
.ALTER_JOB
を使用して指定可能なオプションの伝播ジョブのプロパティについて説明します。
- AQ_MsgProperties
-
このプロパティはTIB/Rendezvousで使用されます。メッセージが伝播される際にOracle Database AQメッセージ・プロパティがどのように使用されるかを指定します。サポートされている値は
TRUE
およびFALSE
です。デフォルト値はFALSE
です。出力伝播ジョブの場合、値が
TRUE
(大/小文字区別なし)であれば、メッセージ・ゲートウェイ・エージェントはTIB/Rendezvousサブジェクトに伝播されるメッセージにほとんどのOracle Database AQメッセージ・プロパティのフィールドを追加します。着信伝播ジョブの場合、値が
TRUE
(大/小文字区別なし)であれば、メッセージ・ゲートウェイ・エージェントは予約済の名前を持つフィールドをソース・メッセージ内で検索し、存在する場合は、その値を使用して対応するOracle Database AQメッセージ・プロパティを設定します。フィールドが存在しない場合、または予期したデータ型でない場合は、デフォルト値が使用されます。 - JMS_DeliveryMode
-
このプロパティはWebSphere MQ JMSおよびOracle JMSで使用されます。このプロパティは、伝播先がJMSメッセージ・システムの場合に使用できます。JMS
MessageProducer
によって伝播先キューにエンキューされるメッセージの配信モードを設定します。デフォルトはPRESERVE_MSG
です。サポートされる値とその関連付けられた配信モードは次のとおりです。-
PERSISTENT
(DeliveryMode.PERSISTENT
) -
NON_PERSISTENT
(DeliveryMode.NON_PERSISTENT
) -
PRESERVE_MSG
(ソースJMSメッセージの配信モードを使用)
-
- JMS_NoLocal
-
このプロパティはWebSphere MQ JMSおよびOracle JMSで使用されます。これは、伝播ソースがJMSメッセージ・システムの場合に使用できます。JMS
TopicSubscriber
のnoLocal
パラメータを設定します。TRUE
は、同じメッセージ・ゲートウェイ・リンクを介してこのトピックにパブリッシュされたメッセージは伝播されないことを示します。デフォルト値はFALSE
で、このようなメッセージがトピックから伝播されることを示します。 - MsgBatchSize
-
このプロパティは、サポートされているすべてのメッセージ・システムで使用できます。これは、1回のトランザクションで伝播可能なメッセージの最大数(使用可能な場合)を指定します。デフォルトは30です。
- PreserveMessageID
-
このプロパティは、WebSphere MQ Base Java、WebSphere MQ JMS、TIB/RendezvousおよびOracle JMSで使用されます。メッセージが宛先メッセージ・システムに伝播される際、メッセージ・ゲートウェイが元のメッセージ識別子を保持するかどうかを指定します。詳細は、使用されるメッセージ・システムの機能によって異なります。サポートされている値は
TRUE
およびFALSE
です。デフォルト値はFALSE
です。 - RV_discardAmount
-
このプロパティはTIB/Rendezvousで使用されます。キューの廃棄量を指定します。インバウンド伝播ジョブでのみ意味があります。デフォルトは0 (ゼロ)です。
- RV_limitPolicy
-
このプロパティはTIB/Rendezvousで使用されます。キュー制限のオーバーフローを解決するための制限ポリシーを指定します。インバウンド伝播ジョブでのみ意味があります。デフォルトは
DISCARD_NONE
です。サポートされている値と関連付けられている制限ポリシーは、DISCARD_NONE
、DISCARD_FIRST
、DISCARD_LAST
およびDISCARD_NEW
です。-
DISCARD_NONE
(TibrvQueue.DISCARD_NONE
) -
DISCARD_FIRST
(TibrvQueue.DISCARD_FIRST
) -
DISCARD_LAST
(TibrvQueue.DISCARD_LAST
) -
DISCARD_NEW
(TibrvQueue.DISCARD_NEW
)
-
- RV_maxEvents
-
このプロパティはTIB/Rendezvousで使用されます。キューの最大イベント制限を指定します。インバウンド伝播ジョブでのみ意味があります。デフォルトは0 (ゼロ)です。