ヘッダーをスキップ
Oracle Streamsアドバンスト・キューイング・ユーザーズ・ガイド
11gリリース1(11.1)
E05782-01
  目次
目次
索引
索引

戻る
戻る
次へ
次へ
 

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 Streams AQとOracle以外のメッセージ・システム間でメッセージ・ゲートウェイによって伝播されます。メッセージ・ゲートウェイ・エージェントは、Oracle Databaseサーバーの外部プロセスとして実行されます。

メッセージ・ゲートウェイでは、1つのデータベースに対して複数のエージェントがサポートされています。デフォルトのエージェントは、DEFAULT_AGENTという名前で自動的に作成されます。伝播ジョブの分離およびグループ化、RAC環境での拡張を可能にする他の名前のエージェントも作成できます。通常、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 Streams AQおよびメッセージ・ゲートウェイ・パッケージにアクセスするには、メッセージ・ゲートウェイ・エージェントからデータベースへの接続を確立する必要があります。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エージェントの起動方法を示します。

例19-5 メッセージ・ゲートウェイ・エージェントの起動

SQL> exec DBMS_MGWADM.STARTUP;
SQL> exec DBMS_MGWADM.STARTUP ('myagent');

第21章「Oracle Messaging Gatewayの監視」で説明されているように、MGW_GATEWAYビューを使用してメッセージ・ゲートウェイ・エージェントのステータスをチェックできます。

19.2.2 Oracle Messaging Gatewayのエージェントの停止

DBMS_MGWADM.SHUTDOWNを使用して、メッセージ・ゲートウェイ・エージェントを停止できます。例19-6に、Messaging Gatewayのデフォルトのエージェントおよびmyagentエージェントの停止方法を示します。

例19-6 メッセージ・ゲートウェイ・エージェントの停止

SQL> exec DBMS_MGWADM.SHUTDOWN;
SQL> exec DBMS_MGWADM.SHUTDOWN ('myagent');

第21章「Oracle Messaging Gatewayの監視」で説明されているように、MGW_GATEWAYビューを使用してメッセージ・ゲートウェイ・エージェントが正常に停止したかどうかをチェックできます。

19.2.3 Oracle Messaging Gatewayのエージェントのスケジューラのジョブ

メッセージ・ゲートウェイでは、Schedulerジョブを使用して、メッセージ・ゲートウェイ・エージェントを起動します。このジョブは、DBMS_MGWADM.STARTUPプロシージャをコールすると作成されます。ジョブを実行すると、外部プロセスでメッセージ・ゲートウェイ・エージェントを作成する外部プロシージャがコールされます。ジョブは、次の場合に削除されます。

  • DBMS_MGWADM.SHUTDOWNがコールされたためにエージェントが停止する場合

  • 再起動不能エラーが発生したためにエージェントが終了する場合

メッセージ・ゲートウェイは、DBMS_SCHEDULERを使用して、繰返し間隔1分で繰返し可能なSchedulerジョブを作成します。ジョブの所有者はSYSです。データベースの停止、データベースの障害または再起動可能なエラーによって指定したジョブ・インスタンスが終了したとき、繰返しジョブによってメッセージ・ゲートウェイ・エージェントは、自動的に再起動が可能になります。指定した時間に実行できるメッセージ・ゲートウェイ・エージェント・ジョブのインスタンスは1つのみです。

各エージェントは、Schedulerジョブ・クラスを使用して、エージェントの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ジョブ、ジョブ・クラスおよびジョブ実行の詳細に関する情報を確認できます。


関連項目:


19.2.4 RAC上でのOracle Messaging Gatewayのエージェントの実行

Oracle Real Application Clusters(RAC)環境とRAC以外の環境で、メッセージ・ゲートウェイ・ジョブの起動原理と停止原理が同じ場合は、RAC環境に対して、いくつかの点を考慮する必要があります。

RAC環境でも、構成済のメッセージ・ゲートウェイ・エージェントごとに1つのプロセスを実行できます。たとえば、デフォルトのエージェントと2つの指定エージェントがエージェント・ユーザーで構成されている場合、これら3つのエージェントはすべて同時に実行できます。各エージェントに関連付けられているデータベース・サービスが、エージェントのSchedulerジョブのサービス・アフィニティ、およびエージェント・プロセスが実行されるデータベースのインスタンスを決定します。

RAC環境でデータベース・インスタンスを停止すると、メッセージ・ゲートウェイ・エージェントが停止中のインスタンスで実行中の場合のみ、メッセージ・ゲートウェイ停止トリガーによってエージェントに停止が通知されます。インスタンスが再起動されると、ジョブ・スケジューラによって自動的に別のインスタンスでジョブの今後の再実行がスケジュールされるか、または停止時のインスタンスでのみジョブを実行できる場合は、そのインスタンスで再実行するジョブがスケジュールされます。

メッセージ・ゲートウェイ・エージェントによるすべてのデータベース接続先を、メッセージ・ゲートウェイ・エージェントのプロセスが実行中のインスタンスにすることをお薦めします。これにより、RAC環境で確実に適切なフェイルオーバー動作が得られます。

メッセージ・ゲートウェイ・エージェントがデータベース・サービスと関連付けられている場合、サービスが実行中のインスタンスで有効化されるまで、そのエージェントの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.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;

関連項目:


19.3.2 WebSphere MQ JMSリンクの作成

WebSphere MQ JMSリンクは、次の情報を指定し、DBMS_MGWADM.CREATE_MSGSYSTEM_LINKをコールすることによって作成されます。

  • インタフェース型

    Java Message Service(JMS)は、キュー・コネクションとトピック・コネクションを識別します。Sun社の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は、リンク、およびそのリンクを使用するすべての伝播ジョブを処理する必要があります。

例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リンクを使用するようにメッセージ・ゲートウェイを構成する方法について説明します。WebSphere MQ JMSリンクにも同じ情報が適用されます。メッセージ・ゲートウェイ構成に関しては違いはありません。

WebSphere MQ接続にSSLを使用するには、次のものが必要です。

  • SSLを使用するように構成されたWebSphere MQチャネル。

  • トラスト・ストア・ファイルおよびキーストア・ファイル(オプション)は、メッセージ・ゲートウェイ・エージェントのプロセスにアクセス可能な場所に存在します。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では、WebSphere MQ Base Javaリンクのmqssllinkを使用して、SSL_RSA_WITH_RC4_128_MD5暗号スイートを使用する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つのパラメータ(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;

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-13 すべてのメッセージ・ゲートウェイのリンクのリスト

SQL> select link_name, link_type from MGW_LINKS;

LINK_NAME     LINK_TYPE
------------------------
MQLINK        MQSERIES
RVLINK        TIBRV

例19-14に示したように、MGW_MQSERIES_LINKビューとMGW_TIBRV_LINKSビューを使用して、メッセージ・システムの型固有の構成情報をチェックできます。

例19-14 メッセージ・システム・リンクの構成情報のチェック

SQL> select link_name, queue_manager, channel, hostname from mgw_mqseries_link;

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 Streams AQキューを登録する必要はありません。

内容は次のとおりです。

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である必要があります。

ワイルドカードのサブジェクト名にprovider_queueを設定した登録済TIB/Rendezvousキューは、着信伝播の伝播ソース・キューとして使用できます。伝播宛先キューまたは例外キューとして、ワイルドカードのサブジェクト名のキューを使用することはお薦めできません。TIB/Rendezvousで説明したように、ワイルドカードのサブジェクトにメッセージを送信すると予期しない現象が発生することがあります。ただし、メッセージ・ゲートウェイを使用する場合も、TIB/Rendezvousを使用する場合も送信を阻止されることはありません。

19.4.2 Oracle以外のキューの登録解除

Oracle以外のキューは、それを参照する伝播ジョブが存在しない場合のみ、DBMS_MGWADM.UNREGISTER_FOREIGN_QUEUEで登録を解除できます。

例19-16では、リンクmqlinkのキューdestqの登録を解除します。

例19-16 Oracle以外のキューの登録解除

BEGIN
  DBMS_MWGADM.UNREGISTER_FOREIGN_QUEUE(name =>'destq', link_name=>'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 Streams AQキューとOracle以外のメッセージ・システム・キュー間でメッセージを伝播するには伝播ジョブが必要です。各伝播ジョブには、一意の伝播型、ソースおよび宛先の3つが含まれます。

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

内容は次のとおりです。

19.5.1 伝播ジョブの概要

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

メッセージ・ゲートウェイでは、双方向のメッセージ伝播が可能です。発信伝播では、メッセージがOracle Streams AQからOracle以外のメッセージ・システムに移動されます。着信伝播では、メッセージがOracle以外のメッセージ・システムからOracle Streams AQに移動されます。

伝播ソースがPoint-to-Pointキューの場合は、メッセージ・ゲートウェイ・エージェントによってキュー内のすべてのメッセージがソース・キューから宛先に移動されます。伝播ソースがトピック(パブリッシュ・サブスクライブ)の場合は、メッセージ・ゲートウェイ・エージェントによって伝播ソース・キューのサブスクライバがメッセージ・システム上に作成されます。エージェントでは、サブスクライバの作成後、パブリッシュされたすべてのメッセージがソース・キューに移動されるだけです。

メッセージを伝播する際に、メッセージ・ゲートウェイ・エージェントによって、メッセージがソース・メッセージ・システムのフォーマットから宛先メッセージ・システムのフォーマットに変換されます。ユーザーは、メッセージ変換を指定することによってメッセージ変換をカスタマイズできます。メッセージ変換に失敗すると、例外キューが指定されている場合は、エージェントがサブスクライバに伝播できるようにメッセージは例外キューに移動されます。

メッセージ・ゲートウェイの例外キューとOracle Streams AQの例外キューは異なります。メッセージ変換に失敗すると、メッセージはメッセージ・ゲートウェイによってメッセージ・ゲートウェイの例外キューに移動されます。メッセージに対してMAX_RETRIESデキューを試行後、メッセージはOracle Streams AQによってOracle Streams AQの例外キューに移動されます。

Oracle Streams AQの例外キューに移動されたメッセージは、関連するメッセージ・ゲートウェイの伝播ジョブ上で回復不能な障害を発生します。この問題を避けるために、メッセージ・ゲートウェイの伝播ジョブの伝播ソースとして使用されるすべてのOracle Streams AQのキューのMAX_RETRIESパラメータは、16を超える値に設定する必要があります。

伝播ソース・キューのメッセージ・システムがメッセージ選択をサポートしている場合は、伝播サブスクライバにメッセージ選択ルールを指定できます。メッセージ・セレクタの条件を満たすメッセージのみが伝播されます。

JMSメッセージの配信モードおよびTIB/Rendezvousのキュー・ポリシーに対するオプションなど、伝播ジョブ・オプションを指定することにより、ユーザーはメッセージの伝播方法を制御できます。

MGW_JOBSビューを使用して、メッセージ・ゲートウェイの伝播ジョブの構成およびステータスを確認できます。

19.5.2 Oracle Messaging Gatewayの伝播ジョブの作成

メッセージ・ゲートウェイの伝播ジョブは、DBMS_MGWADM.CREATE_JOBを使用して作成されます。

JMS伝播以外の伝播ソースが、Oracle Streams AQキューである場合、キューはシングル・コンシューマ・キューか、マルチ・コンシューマ・キューのいずれかです。マルチ・コンシューマ・キューの場合、メッセージ・ゲートウェイは、DBMS_MGWADM.CREATE_JOBがコールされると、伝播ジョブのjob_nameに対応するOracle Streams AQサブスクライバのMGW_job_nameを作成します。

伝播ソースが、Oracle Java Message Service(OJMS)トピックまたはWebSphere MQ JMSトピックなどのJMSトピックである場合は、メッセージ・ゲートウェイ・エージェントによってソース・メッセージ・システムのトピックに対してJMSサブスクライバMGW_job_nameが作成されます。エージェントを実行中でない場合は、エージェントを再起動するまでサブスクライバは作成されません。

伝播ソースがキューの場合、そのキューを伝播ソースとして使用して伝播ジョブを1つのみ作成できます。伝播ソースがトピックの場合は、そのトピックを各伝播ジョブがメッセージ・システム内のトピックに対応する固有のサブスクライバを有する伝播ソースとして使用して、複数の伝播ジョブを設定できます。

例19-18では、メッセージ・ゲートウェイの伝播ジョブjob_aq2mqを作成します。

例19-18 メッセージ・ゲートウェイ伝播ジョブの作成

BEGIN
   DBMS_MGWADM.CREATE_JOB(
     job_name            =>  'job_aq2mq',
     propagation_type    =>   DBMS_MGWADM.OUTBOUND_PROPAGATION,
     source              =>  'mquser.srcq',
     destination         =>  'deqq@mqlink');
END;

注意:

WebSphere MQ JMSトピックが伝播ジョブに関連していて、リンクのインタフェース型がDBMS_MGWADM.JMS_TOPIC_CONNECTIONの場合、永続サブスクライバMGL_subscriber_idはログ・トピックに対して作成されます。メッセージ・ゲートウェイの伝播ジョブが正常に削除されると、永続サブスクライバは削除されます。

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

伝播ジョブは、DBMS_MGWADM.CREATE_JOBによる作成時に最初に有効化または無効化することができます。デフォルトでは、作成時にジョブは有効化されます。伝播ジョブを有効化するにはDBMS_MGWADM.ENABLE_JOB、無効化するにはDBMS_MGWADM.DISABLE_JOBを使用します。ジョブが無効化されている場合、いずれの伝播処理も発生しません。

例19-19では、伝播ジョブjob_aq2mqの伝播を有効化します。

例19-19 メッセージ・ゲートウェイ伝播ジョブの有効化

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

例19-20では、伝播ジョブjob_aq2mqの伝播を無効化します。

例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-22 例外キューの追加による伝播ジョブの変更

BEGIN
    DBMS_MGWADM.ALTER_JOB(
       job_name         =>  'job_aq2mq',        exception_queue  =>  'mgwuser.my_ex_queue');
END;

例19-23では、伝播ジョブのポーリング間隔を変更します。ポーリング間隔によって、エージェントが伝播ソース・キュー内で使用可能なメッセージを検出する速度が決まります。デフォルトのポーリング間隔は5秒、またはメッセージ・ゲートウェイの初期化ファイル内のoracle.mgw.polling_intervalで設定されている値です。

例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 メッセージ・ゲートウェイ伝播ジョブのサブプログラム

ジョブ・プロシージャ サブスクライバ、スケジュール・プロシージャを置換します。
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

内容は次のとおりです。

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

新しい形式のジョブと古い形式のジョブという、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_JOBがコールされていないかぎり、DBMS_MGWADM.REMOVE_SUBSCRIBERおよびDBMS_MGWADM.UNSCHEDULE_PROPAGATIONを使用できます。古い形式のジョブに対して、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 Streams AQのマルチ・コンシューマ・キューまたはシングル・コンシューマ・キューを、DBMS_MGWADM.CREATE_JOBにより作成される新しい形式の発信ジョブの伝播ソースにすることができます。古い形式の発信ジョブの伝播ソースには、マルチ・コンシューマ・キューを使用する必要があります。管理者がDBMS_MGWADM.ADD_SUBSCRIBERのコールを試行し、ソースがシングル・コンシューマ・キューである場合、エラーが発生します。

伝播ソースがシングル・コンシューマ・キューの場合、システム固有(JMS以外)の発信伝播について、Oracle Streams 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 値の変更 動的変更
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に関する注意

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

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

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

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

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

  6. クライアント・チャネル定義表(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
ジョブ

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 値の変更 動的変更
service 可(1) 不可 不可
daemon 可(1) 不可 不可
network 可(1) 不可 不可
cm_name 可(2) 不可 不可
cm_ledger 可(2) 不可 不可

表19-5に関する注意

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

  2. 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
ジョブ 不可

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

この項では、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などのように、使用されるCipherSuiteを指定します。これは、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で使用されます。使用されるCipherSuiteが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_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引数に使用する値を指定します。値は必須ではありません。値を指定した場合は、メッセージ・ゲートウェイ・エージェントによりエンキュー(put)操作に指定した値にMQOO_OUTPUTが追加されます。デキュー(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 Streams AQメッセージ・プロパティの使用方法を指定します。サポートされる値は、TRUEおよびFALSEです。デフォルト値はFALSEです。

出力伝播ジョブの場合、値がTRUE(大/小文字区別なし)であれば、メッセージ・ゲートウェイ・エージェントはTIB/Rendezvousサブジェクトに伝播されるメッセージにほとんどのOracle Streams AQメッセージ・プロパティのフィールドを追加します。

着信伝播ジョブの場合、値がTRUE(大/小文字区別なし)であれば、メッセージ・ゲートウェイ・エージェントは予約済の名前を持つフィールドをソース・メッセージ内で検索し、存在する場合は、その値を使用して対応するOracle Streams AQメッセージ・プロパティを設定します。フィールドが存在しない場合、または予期したデータ型でない場合は、デフォルト値が使用されます。

JMS_DeliveryMode

このプロパティはWebSphere MQ JMSおよびOracle JMSで使用されます。このプロパティは、伝播先がJMSメッセージ・システムの場合に使用できます。このプロパティでは、JMSのMessageProducerにより伝播先キューにエンキューされるメッセージの配信モードを設定します。デフォルトはPRESERVE_MSGです。サポートされている値と関連配信モードは、次のとおりです。

  • PERSISTENTDeliveryMode.PERSISTENT

  • NON_PERSISTENTDeliveryMode.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_NONETibrvQueue.DISCARD_NONE

  • DISCARD_FIRSTTibrvQueue.DISCARD_FIRST

  • DISCARD_LASTTibrvQueue.DISCARD_LAST

  • DISCARD_NEWTibrvQueue.DISCARD_NEW

RV_maxEvents

このプロパティはTIB/Rendezvousで使用されます。このプロパティでは、キューの最大イベント制限を指定します。着信伝播ジョブにのみ有効です。デフォルトは0です。