日本語PDF

19 Oracle Messaging Gatewayの操作

Oracle Messaging Gateway(MGW)をロードおよび設定すると、構成および実行が可能になります。DBMS_MGWADM.ALTER_AGENTを使用して、メッセージ・ゲートウェイ・エージェントがデータベース接続の確立に使用するユーザー名、パスワード、データベース指定子および接続タイプを設定できます。

トピック:

注意:

例で示すすべてのコマンドは、MGW_ADMINISTRATOR_ROLEが付与されたユーザーが実行する必要があります。

Oracle Messaging Gatewayのエージェントの構成

メッセージは、Oracle Database Advanced QueuingとOracle以外のメッセージ・システム間でメッセージ・ゲートウェイによって伝播されます。メッセージ・ゲートウェイ・エージェントは、Oracle Databaseサーバーの外部プロセスとして実行されます。

メッセージ・ゲートウェイでは、1つのデータベースに対して複数のエージェントがサポートされています。デフォルトのエージェントは、DEFAULT_AGENTという名前で自動的に作成されます。伝播ジョブの分離およびグループ化、Oracle RAC環境での拡張を可能にする他の名前のエージェントも作成できます。通常、Oracle RAC環境でない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');

メッセージ・ゲートウェイ・エージェントの削除

メッセージ・ゲートウェイ・エージェントは、DBMS_MGWADM.REMOVE_AGENTをコールすることによって削除できます。エージェントを削除する前に、そのエージェントに関連付けられているすべてのメッセージ・ゲートウェイのリンクを削除し、そのエージェントを停止する必要があります。デフォルトのエージェントのDEFAULT_AGENTは削除できません。例19-2では、myagentというエージェントを削除します。

例19-2 メッセージ・ゲートウェイ・エージェントの削除

SQL> exec DBMS_MGWADM.REMOVE_AGENT(agent_name   => 'myagent');

データベース接続の設定

メッセージ・ゲートウェイ・エージェントは、データベースの外部プロセスとして実行されます。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');

リソース制限の設定

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

Oracle Messaging Gatewayのエージェントの起動と停止

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

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');

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');

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 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以外のメッセージ・システムのクライアントとして実行すると、メッセージ・ゲートウェイ・エージェントはメッセージ・システム・リンクを介してOracle以外のメッセージ・システムと通信できます。メッセージ・システム・リンクとは、メッセージ・ゲートウェイ・エージェントとOracle以外のメッセージ・システム間の一連の接続です。

Oracle以外のメッセージ・システムのメッセージ・システム・リンクを構成するには、ユーザーはエージェント情報を指定してOracle以外のメッセージ・システムへの接続を確立する必要があります。ユーザーは、メッセージ・コネクションの最大数を指定できます。

エージェント名は、各メッセージ・システム・リンクに関連付けられます。これは、リンクの作成時に設定され、変更できません。リンクに関連付けられているエージェントは、そのリンクと関連付けられている登録済のキューを使用するすべての伝播ジョブを処理する必要があります。メッセージ・システム・リンクの作成時にエージェント名が指定されていない場合、メッセージ・ゲートウェイのエージェントが使用されます。

トランザクションと永続メッセージをサポートするOracle以外のメッセージ・システムのメッセージ・システム・リンクを構成する場合は、着信伝播および発信伝播のログ・キューの固有の名前を指定して1回のみメッセージが配信されるようにする必要があります。ログ・キューは、メッセージ・ゲートウェイ・エージェントによってのみ使用される必要があります。他のプログラムでは、ログ・キューのメッセージをエンキューまたはデキューできません。着信ログ・キューと発信ログ・キューは同じ物理的キューを参照できますが、別の物理的キューを参照した方がパフォーマンスは向上します。

1つのメッセージ・ゲートウェイ・エージェントにつき、1つの伝播ログ・キューにアクセスできます。これにより、指定のログ・キューに、そのエージェントによって処理される伝播ジョブのみに関するログ記録が含まれ、そのエージェントは、発生する可能性のある他のログ記録の破棄が可能であることが保証されます。

メッセージ・システム・リンクを構成する際に、options引数を指定することもできます。options引数とは、SYS.MGW_PROPERTY型の組{名前、値}のセットです。

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

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.oraCLASSPATHセットにある必要があります。メッセージ・ゲートウェイのデフォルトのエージェント(DEFAULT_AGENT)は、リンク、およびそのリンクを使用するすべての伝播ジョブを処理する必要があります。

関連項目:

例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;

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です。リンク・オプションを使用して、別の物理的キューを指定できます。

  • オプション情報の例

例19-8では、JMSトピック・インタフェースを使用してWebSphere MQキュー・マネージャに対するメッセージ・ゲートウェイ・リンクを構成します。このリンクは、mqjmslinkという名前で、WebSphere MQチャネルmychannelを使用して、ホストmyhost.mydomainおよびポート1414上のWebSphere MQキュー・マネージャmy.queue.managerを使用するように構成されます。

この例ではオプション・パラメータを使用して、ログ・トピックで使用されるデフォルト以外の永続的なサブスクライバ・キューを指定します。メッセージ・ゲートウェイ・エージェントmyagentは、リンク、およびそのリンクを使用するすべての伝播ジョブを処理する必要があります。

関連項目:

例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;

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関連プロパティ

  • java.net.ssl.keyStore

    このプロパティは、キーストアの場所を指定するために使用されます。キーストアは、認証およびデータ整合性など、様々な目的で使用されるキー・マテリアルのデータベースです。

  • java.net.ssl.keyStorePassword

    このプロパティは、キーストアのパスワードを指定するために使用されます。このパスワードは、キーストアへのアクセス前に、キーストアに含まれているデータの整合性を確認するために使用されます。

  • java.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;

TIB/Rendezvousリンクの作成

TIB/Rendezvousリンクは、DBMS_MGWADM.CREATE_MSGSYSTEM_LINKをコールして作成します。TibrvRvdTransport型の転送を作成するための3つのパラメータ(servicenetworkおよび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;

メッセージ・システム・リンクの変更

一部のリンク情報は、リンクの作成後に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;

メッセージ・システム・リンクの削除

メッセージ・ゲートウェイのリンクに関連付けられたすべての登録済キューがすでに削除されている場合のみ、Oracle以外のメッセージ・システムへのメッセージ・ゲートウェイのリンクをDBMS_MGWADM.REMOVE_MSGSYSTEM_LINKで削除できます。メッセージ・ゲートウェイ・エージェントを実行中または停止中でもリンクを削除できます。例19-12では、リンクmqlinkを削除します。

例19-12 メッセージ・ゲートウェイのリンクの削除

BEGIN
  dbms_mgwadm.remove_msgsystem_link(linkname =>'mqlink');
END;

メッセージ・システム・リンクのビュー

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 

Oracle以外のメッセージ・システムのキューの構成

ソース・キュー、宛先キューまたは例外キューとして伝播に関連しているすべてのOracle以外のメッセージ・システム・キューは、メッセージ・ゲートウェイ管理インタフェースを介して登録する必要があります。伝播に関連するOracle Database Advanced Queuingキューを登録する必要はありません。

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

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;
WebSphere MQ Base Javaキューの登録

WebSphere MQではPoint-to-Pointキューのみがサポートされているため、ドメインはDBMS_MGWADM.DOMAIN_QUEUEまたはNULLである必要があります。

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ドキュメントを参照してください。

TIB/Rendezvousサブジェクトの登録

TIB/Rendezvousサブジェクトをメッセージ・ゲートウェイに登録する際には、provider_queueパラメータでTIB/Rendezvousサブジェクト名を指定します。登録済TIB/Rendezvousキューのドメインは、DBMS_MGWADM.DOMAIN_TOPICまたはNULLである必要があります。

登録済のTIB/Rendezvousキューでprovider_queueがワイルドカード・サブジェクト名に設定されている場合、インバウンド伝播の伝播ソース・キューとして使用できます。ワイルドカード・サブジェクト名を持つキューを伝播宛先キューまたは例外キューに使用することは避けてください。TIB/Rendezvousで記載されているように、ワイルドカード・サブジェクトにメッセージを送信すると、予期しない動作を引き起こす可能性があります。ただし、メッセージ・ゲートウェイまたはTIB/Rendezvousではこれを阻止しません。

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;

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

Oracle Messaging Gatewayの伝播ジョブの構成

Oracle Database AQキューとOracle以外のメッセージ・システム・キュー間でメッセージを伝播するには伝播ジョブが必要です。各伝播ジョブには、一意の伝播型、ソースおよび宛先の3つが含まれます。

伝播ジョブを作成し、JMS宛先間でメッセージを伝播できます。伝播ジョブを作成し、JMS以外のキュー間でメッセージを伝播できます。メッセージ・ゲートウェイでは、JMS宛先とJMS以外のキュー間におけるメッセージの伝播はサポートされていません。

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

伝播ジョブの概要

伝播ジョブは、伝播されるメッセージおよびその方法を指定します。

メッセージ・ゲートウェイでは、双方向のメッセージ伝播が可能です。発信伝播では、メッセージが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ビューを使用して、メッセージ・ゲートウェイの伝播ジョブの構成およびステータスを確認できます。

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;

伝播ジョブの有効化および無効化

伝播ジョブは、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;

伝播ジョブのリセット

伝播ジョブに問題が発生した場合、メッセージ・ゲートウェイ・エージェントでは伝播ジョブを停止する前に、指数バックオフ・スキームで失敗した操作が最大16回再試行されます。DBMS_MGWADM.RESET_JOBを使用すると、失敗回数をゼロにリセットし、エージェントで失敗した操作をただちに再試行できます。

例19-21では、伝播ジョブjob_aq2mqの失敗回数をリセットします。

例19-21 伝播ジョブのリセット

BEGIN
  DBMS_MGWADM.RESET_JOB (job_name => 'job_aq2mq');
END;

伝播ジョブの変更

伝播ジョブが作成されたら、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;

伝播ジョブの削除

メッセージ・ゲートウェイの伝播ジョブは、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;

伝播ジョブ、サブスクライバおよびスケジュール

サブプログラムは、伝播ジョブの作成および管理を簡素化するDBMS_MGWADMパッケージの一部として提供されます。これらのサブプログラムを使用して、前のリリースのような非結合サブスクライバおよびスケジュールではなく、伝播ジョブを構成できます。伝播ジョブ・プロシージャを使用することをお薦めしますが、下位互換性を保つために、サブスクライバ・プロシージャおよびスケジュール・プロシージャもサポートされています。

表19-1は、メッセージ・ゲートウェイの伝播ジョブ・プロシージャ、および置換するサブスクライバ・プロシージャまたはスケジュール・プロシージャ(あるいはその両方)を示したものです。すべてのプロシージャは、DBMS_MGWADMパッケージからのものです。

表19-1 メッセージ・ゲートウェイ伝播ジョブのサブプログラム

ジョブ・プロシージャ サブスクライバ、スケジュール・プロシージャを置換します。

CREATE_JOB

ADD_SUBSCRIBERSCHEDULE_PROPAGATION

ALTER_JOB

ALTER_SUBSCRIBERALTER_PROPAGATION_SCHEDULE

REMOVE_JOB

REMOVE_SUBSCRIBERUNSCHEDULE_PROPAGATION

ENABLE_JOB

ENABLE_PROPAGATION_SCHEDULE

DISABLE_JOB

DISABLE_PROPAGATION_SCHEDULE

RESET_JOB

RESET_SUBSCRIBER

この項では、次の項目について説明します。

伝播ジョブ、サブスクライバおよびスケジュールのインタフェースの互換性

新しい形式のジョブと古い形式のジョブという、2つのタイプの伝播ジョブを作成できます。新しい形式のジョブは、DBMS_MGWADM.CREATE_JOBを使用して作成されます。古い形式のジョブは、同じ{propagation_typesourcedestination}の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をコールできます。

伝播ジョブ、サブスクライバ、スケジューラのビュー

MGW_JOBSビューには、現在の伝播ジョブ、新旧両方の形式のジョブに関する情報、およびMGW_SUBSCRIBERSビューとMGW_SCHEDULESビューで表示されるすべての関連情報が表示されます。一致しないサブスクライバまたはスケジュールは伝播ジョブを構成せず、MGW_JOBSビューには表示されないため、これらの検索には引き続きMGW_SUBSCRIBERSビューおよびMGW_SCHEDULESビューが役立ちます。

伝播ソースとしてのシングル・コンシューマ・キュー

メッセージ・ゲートウェイを使用して、Oracle Database AQのマルチ・コンシューマ・キューまたはシングル・コンシューマ・キューを、DBMS_MGWADM.CREATE_JOBにより作成される新しい形式の発信ジョブの伝播ソースにすることができます。古い形式の発信ジョブの伝播ソースには、マルチ・コンシューマ・キューを使用する必要があります。管理者がDBMS_MGWADM.ADD_SUBSCRIBERのコールを試行し、ソースがシングル・コンシューマ・キューである場合、エラーが発生します。

伝播ソースがシングル・コンシューマ・キューの場合、システム固有(JMS以外)の発信伝播について、Oracle Database AQのデキュー条件はサポートされていません。

構成プロパティ

この項では、メッセージ・ゲートウェイのリンク、外部キューおよび伝播ジョブに関連する基本的なプロパティとオプションのプロパティについて説明します。

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

WebSphere MQシステム・プロパティ

表19-2は、WebSphere MQメッセージ・リンクの基本的な構成プロパティをまとめたものです。この表は、SYS.MGW_MQSERIES_PROPERTIESのオプションの(NULLが可能な)プロパティ、変更可能なプロパティ、値が動的に変更可能なプロパティを示しています。

表19-2 WebSphere MQリンク・プロパティ

属性 NULL 値の変更 動的変更

queue_manager

不可

不可

不可

hostname

可(1)

不可

不可

port

可(1)

不可

不可

channel

可(1)、(6)

不可

interface_type

可(2)

不可

不可

max_connections

可(3)

username

password

inbound_log_queue

可(4)

可(4)

outbound_log_queue

可(5)

可(5)

表19-2に関する注意

  • hostnameNULLの場合、portおよびchannelはNULLである必要があります。hostnameがNULLでない場合、portはNULL以外である必要があります。hostnameがNULLの場合は、WebSphere MQバインド接続が使用され、それ以外の場合はクライアント接続が使用されます。

  • interface_typeNULLの場合は、デフォルト値DBMS_MGWADM.MQSERIES_BASE_JAVA_INTERFACEが使用されます。

  • max_connectionsNULLの場合は、デフォルト値1が使用されます。

  • リンクが着信伝播に使用されない場合は、属性inbound_log_queueNULLを設定できます。ログ・キューを変更できるのは、このリンクが着信伝播ジョブによって参照されない場合のみです。

  • リンクが発信伝播に使用されない場合は、属性outbound_log_queueNULLを設定できます。ログ・キューを変更できるのは、このリンクが発信伝播ジョブによって参照されない場合のみです。

  • クライアント・チャネル定義表(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のオプションの構成プロパティ

プロパティ名 使用対象 値の変更 動的変更

"MQ_ccdtUrl"

リンク

不可

"MQ_ccsid"

リンク

不可

"MQ_ReceiveExit"

リンク

不可

"MQ_SecurityExit"

リンク

不可

"MQ_SendExit"

リンク

不可

"MQ_SSLCipherSuite"

リンク

不可

"MQ_SSLFipsRequired"

リンク

不可

"MQ_SSLPeerName"

リンク

不可

"MQ_SSLResetCount"

リンク

不可

"MQ_openOptions"

外部キュー

不可

不可

"MsgBatchSize"

ジョブ

"PreserveMessageID"

ジョブ

表19-4 WebSphere MQ JMSのオプションの構成プロパティ

プロパティ名 使用対象 値の変更 動的変更

"MQ_BrokerControlQueue"

リンク

不可

"MQ_BrokerPubQueue"

リンク

不可

"MQ_BrokerQueueManager"

リンク

不可

"MQ_BrokerVersion"

リンク

不可

"MQ_ccdtUrl"

リンク

不可

"MQ_ccsid"

リンク

不可

"MQ_JmsDurSubQueue"

リンク

不可

不可

"MQ_PubAckInterval"

リンク

不可

"MQ_ReceiveExit"

リンク

不可

"MQ_ReceiveExitInit"

リンク

不可

"MQ_SecurityExit"

リンク

不可

"MQ_SecurityExitInit"

リンク

不可

"MQ_SendExit"

リンク

不可

"MQ_SendExitInit"

リンク

不可

"MQ_SSLCipherSuite"

リンク

不可

"MQ_SSLCrl"

リンク

不可

"MQ_SSLFipsRequired"

リンク

不可

"MQ_SSLPeerName"

リンク

不可

"MQ_SSLResetCount"

リンク

不可

"MQ_CharacterSet"

外部キュー

不可

不可

"MQ_JmsDurSubQueue"

外部キュー

不可

不可

"MQ_JmsTargetClient"

外部キュー

不可

不可

"JMS_DeliveryMode"

ジョブ

"JMS_NoLocal"

ジョブ

不可

不可

"MsgBatchSize"

ジョブ

"PreserveMessageID"

ジョブ

TIB/Rendezvousシステム・プロパティ

表19-5は、TIB/Rendezvousメッセージ・リンクの基本的な構成プロパティをまとめたものです。これは、SYS.MGW_TIBRV_PROPERTIESのオプションの(NULLが可能な)プロパティ、変更可能なプロパティ、値が動的に変更可能なプロパティを示しています。

表19-5 TIB/Rendezvousリンク・プロパティ

属性 NULL 値の変更 動的変更

service

可(1)

不可

不可

daemon

可(1)

不可

不可

network

可(1)

不可

不可

cm_name

可(2)

不可

不可

cm_ledger

可(2)

不可

不可

表19-5に関する注意:

  • servicedaemonまたはnetworkNULLの場合は、システムのデフォルト値が使用されます。

  • cm_nameおよびcm_ledger属性は、TIB/Rendezvousの証明済メッセージがサポートされる将来の使用に備えて確保されています。現在、TIB/Rendezvousリンクの構成時には、これらのパラメータにNULLを指定する必要があります。

表19-6は、TIB/Rendezvousメッセージ・システムが使用される場合にサポートされているオプションの構成プロパティをまとめたものです。この表は、プロパティ名、そのプロパティの適用場所、プロパティを変更できるかどうか、変更可能な場合は値が動的に変更可能かどうかを示しています。サポートされているのはこの表に示すプロパティのみで、その他のプロパティは無視されます。

表19-6 TIB/Rendezvousのオプション・プロパティ

プロパティ名 使用対象 値の変更 動的変更

"AQ_MsgProperties"

ジョブ

"MsgBatchSize"

ジョブ

"PreserveMessageID"

ジョブ

"RV_discardAmount"

ジョブ

不可

"RV_limitPolicy"

ジョブ

不可

"RV_maxEvents"

ジョブ

不可

オプションのリンクの構成プロパティ

この項では、DBMS_MGWADM.CREATE_MSGSYSTEM_LINKおよびDBMS_MGWADM.ALTER_MSGSYSTEM_LINKoptionsパラメータを使用して指定できるオプションのリンク・プロパティについて説明します。それぞれの項目には、そのプロパティを使用できるメッセージ・システムも示されています。

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管理プロパティに対応します。

オプションの外部キューの構成プロパティ

この項では、DBMS_MGWADM.REGISTER_FOREIGN_QUEUEoptionsパラメータを使用して指定できるオプションの外部キュー・プロパティについて説明します。それぞれの項目には、そのプロパティを使用できるメッセージ・システムも示されています。

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です。

オプションのジョブの構成プロパティ

この項では、オプションのパラメータの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 TopicSubscribernoLocalパラメータを設定します。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_NONEDISCARD_FIRSTDISCARD_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 (ゼロ)です。