COracle Messaging Gateway

Oracle Messaging Gatewayの概要

メッセージ・ゲートウェイ管理パッケージDBMS_MGWADMでは、メッセージ・ゲートウェイ・エージェントの作成、エージェントの管理、メッセージ・システム・リンクの作成、Oracle以外のキューの登録および伝播ジョブの設定のためのインタフェースを提供しています。

トピック:

Oracle Messaging Gatewayの概要

メッセージ・ゲートウェイを使用すると、Oracle以外のメッセージ・システムとOracle Database Advanced Queuingに基づくアプリケーション間の通信が可能になります。

Oracle Database Advanced Queuingでは、2つのOracle Database Advanced Queuingキュー間の伝播機能が提供されており、E-Business(IDAPを介したHTTP)が可能です。メッセージ・ゲートウェイでは、この機能をOracle以外のメッセージ・システムに基づくアプリケーションに拡張しています。

メッセージ・ゲートウェイはOracle Database Advanced QueuingおよびOracle Databaseと統合されているため、信頼性のあるメッセージ配信が可能です。メッセージ・ゲートウェイを使用すると、永続性がサポートされているOracle以外のメッセージ・システムとOracle Database Advanced Queuing間で、メッセージの配信が1回のみ行われることが保証されます。PL/SQLインタフェースでは、特にOracle Database Advanced Queuingの使用方法をすでによく理解している開発者を対象に、簡単に使用できる管理APIが提供されます。

今回のリリースのメッセージ・ゲートウェイでは、Oracle Database Advanced QueuingとWebSphere MQ 9.0およびTIB/Rendezvous 8.2ベースのアプリケーションの統合がサポートされています。

Oracle Messaging Gatewayの機能

メッセージ・ゲートウェイの機能は次のとおりです。

  • Oracle Database Advanced Queuingメッセージ伝播の拡張

    メッセージ・ゲートウェイでは、Oracle Database Advanced QueuingとOracle以外のメッセージ・システム間でメッセージが伝播されます。Oracle Database Advanced Queuingアプリケーションによって送信されたメッセージは、Oracle以外のメッセージ・システム・アプリケーションで受信できます。逆に、Oracle以外のメッセージ・システム・アプリケーションによってパブリッシュされたメッセージは、Oracle Database Advanced Queuingアプリケーションで使用できます。

  • Java Message Service(JMS)メッセージ・システムに対するサポート

    メッセージ・ゲートウェイでは、Oracle Java Message Service(Oracle JMS)およびWebSphere MQ Java Message Service(WebSphere MQ JMS)間でメッセージを伝播します。

  • システム固有のメッセージ・フォーマットのサポート

    メッセージ・ゲートウェイでは、メッセージ・システム固有のメッセージ・フォーマットがサポートされています。Oracle Database Advanced Queuingメッセージは、RAWまたは任意のOracleオブジェクト型のペイロードを持てます。WebSphere MQメッセージには、テキスト・メッセージまたはバイト・メッセージが有効です。TIB/Rendezvousメッセージは、ネスト化されたデータ型MSGおよび符号のない整数以外の任意のTIB/Rendezvousワイヤ・フォーマットのデータ型にできます。

  • メッセージの変換

    メッセージ・ゲートウェイを使用すると、Oracle Database Advanced QueuingメッセージとOracle以外のメッセージ・システムのメッセージ間でメッセージを簡単に変換できます。メッセージは、メッセージ・ゲートウェイによって提供される自動メッセージ変換ルーチンまたはユーザーによって提供されたメッセージ変換関数のいずれかを介して変換されます。

    ノート:

    • メッセージ・ゲートウェイでは、JMSメッセージ・システムとJMS以外のメッセージ・システム間のメッセージ伝播はサポートされていません。

    • Oracle Database AQシャード・キューは、Oracle Database 12cリリース2 (12.2)のMGWではサポートされません。

  • Oracle Databaseとの統合

    メッセージ・ゲートウェイは、Oracle Database Advanced Queuingと類似したPL/SQLインタフェースによって管理されています。構成情報は、Oracle Database表に格納されています。メッセージの伝播は、Oracle Databaseサーバーの外部プロセスによって実行されます。

  • メッセージ配信の保証

    トランザクションが伝播元のメッセージ・システムと伝播先のメッセージ・システムの両方でサポートされている場合、メッセージ・ゲートウェイでは永続メッセージが1回のみ伝播されることが保証されます。メッセージが永続メッセージではないか、伝播元または伝播先のメッセージ・システムでトランザクションがサポートされていない場合は、伝播が行われることが保証されるのみです。

  • セキュリティのサポート

    メッセージ・ゲートウェイでは、Oracle DatabaseおよびOracle以外のメッセージ・システムのクライアント認証がサポートされています。

    メッセージ・ゲートウェイでは、メッセージ・ゲートウェイ・エージェントによるIBM WebSphere MQおよびWebSphere MQ JMS接続においてSecure Socket Layer(SSL)もサポートされています。

  • 複数エージェントのサポート

    メッセージ・ゲートウェイでは、1つのデータベースに対して複数のエージェントがサポートされています。伝播ジョブを機能、編成または作業負荷別にパーティション化し、異なるメッセージ・ゲートウェイ・エージェントに割り当てることができます。これにより、メッセージ・ゲートウェイがOracle RAC環境で拡張され、伝播ジョブのグループ化および分離が可能になります。

Oracle Messaging Gatewayのアーキテクチャ

メッセージ・ゲートウェイには、次の2つの主要コンポーネントがあります。

  • 管理パッケージDBMS_MGWADM

  • メッセージ・ゲートウェイ・エージェント

図C-1は、これらのコンポーネントがOracle DatabaseとOracle以外のメッセージ・システム間で連動する方法を示したものです。

図C-1 メッセージ・ゲートウェイのアーキテクチャ

図C-1の説明が続きます
「図C-1メッセージ・ゲートウェイのアーキテクチャ」の説明
管理パッケージDBMS_MGWADM

メッセージ・ゲートウェイ管理パッケージDBMS_MGWADMでは、指定されたメッセージ・ゲートウェイ・エージェントの作成、エージェントの管理、メッセージ・システム・リンクの作成、Oracle以外のキューの登録および伝播ジョブの設定のためのインタフェースを提供しています。

メッセージ・ゲートウェイ・エージェントが稼働中かどうかにかかわらず、構成を変更するには、ユーザーはパッケージのプロシージャをコールします。メッセージ・ゲートウェイ・エージェントが稼働中の場合は、パッケージ内のプロシージャが構成の変更に関する通知をエージェントに送信します。大部分の構成変更では、エージェントは動的に構成を変更しますが、一部、変更を反映するために、エージェントを停止して再起動する必要がある場合があります。パッケージ内のすべてのプロシージャはシリアライズされており、メッセージ・ゲートウェイ・エージェントが通知を作成時と同じ順序で受信し、処理できることが保証されています。

関連項目:

DBMS_MGWADMパッケージの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。

Oracle Messaging Gatewayのエージェント

メッセージ・ゲートウェイ・エージェントは、Oracle Databaseサーバーの外部プロセスとして実行され、伝播ジョブを処理します。起動および停止するには、DBMS_MGWADMパッケージのSTARTUPおよびSHUTDOWNプロシジャをそれぞれコールします。

メッセージ・ゲートウェイ・エージェントには、マルチスレッド伝播エンジンおよびメッセージ・システム用のドライバ・セットが含まれます。伝播エンジンによって伝播ジョブが適切にスケジューリングされ、伝播処理が同時に処理されます。エージェントのポーリング・スレッドによって、有効な伝播ジョブのソース・キューが定期的にポーリングされ、メッセージが使用可能な場合は、ワーカー・スレッドが起動して伝播ジョブが処理されます。Oracle以外のメッセージ・システムのドライバは、すべてのメッセージ操作においてメッセージ・システムのクライアントとして実行されます。

Oracle Database

メッセージ・ゲートウェイでは、Oracle Databaseとして、Oracle Database Advanced QueuingとOracle以外のメッセージ・システム間のメッセージ伝播用メカニズムを提供しています。Oracle Database Advanced Queuingは、伝播元または伝播先のいずれかの立場ですべての伝播ジョブに関与しています。

メッセージ・ゲートウェイは、PL/SQL管理パッケージDBMS_MGWADMを介して管理されています。すべての構成情報とメッセージ・ゲートウェイの実行状態情報はOracle Databaseに格納され、データベース・ビューからアクセスできます。

メッセージ・ゲートウェイ・エージェントは、Oracle Databaseサーバーの外部プロシージャとして実行されます。したがって、関連付けられたデータベース・サーバーが実行中の場合のみ実行されます。

Oracle以外のメッセージ・システム

メッセージ・ゲートウェイ・エージェントは、メッセージ・システム・リンクを介してOracle以外のメッセージ・システムに接続されます。メッセージ・システム・リンクとは、メッセージ・ゲートウェイ・エージェントとOracle以外のメッセージ・システム間の通信チャネルです。ユーザーは、管理パッケージDBMS_MGWADMを使用して、同じまたは異なるOracle以外のメッセージ・システムへの複数のリンクを構成できます。

WebSphere MQキュー、TIB/Rendezvousサブジェクト、WebSphere MQ JMS宛先(キューおよびトピック)などのOracle以外のメッセージ・システム内のキューは、すべてメッセージ・ゲートウェイの伝播元および伝播先として機能できます。これらのキューを外部キューと呼びます。ソース・キュー、宛先キューまたは例外キューとしてメッセージ伝播に関与するすべての外部キューは、管理パッケージを経由して登録する必要があります。外部キューを登録しても、Oracle以外のメッセージ・システムに物理的なキューは作成されず、キューにアクセスするためのメッセージ・システム・リンク、システム固有の名前、ドメイン(キューまたはトピック)など、キューに関する情報が記録されるだけです。物理的なキューは、Oracle以外のメッセージ・システムの管理インタフェースを介して作成する必要があります。

伝播処理の概要

メッセージが1つのメッセージ・システムから別のメッセージ・システムに伝播されるようにするには、伝播ジョブを定義する必要があります。伝播ジョブは、ソース・キュー、宛先キュー、および伝播ジョブの処理に影響する他の各種属性を定義します。

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

伝播ジョブはスケジュールが有効になったときに処理されます。伝播ジョブを無効にすると伝播処理が停止されますが、メッセージ・サブスクリプションは停止されません。

メッセージ・ゲートウェイ・エージェントが伝播ジョブを処理すると、ソース・キューからメッセージがデキューされ、宛先キューへメッセージがエンキューされます。メッセージは、各メッセージの伝播時に、ソース・メッセージ・システム固有のフォーマットから宛先メッセージ・システム固有のフォーマットに変換されます。メッセージ・ゲートウェイでは、一般的に使用されている単純なメッセージ・フォーマット間のメッセージ変換は自動的に実行されます。独自のメッセージ変換機能を提供することによって、メッセージ変換をカスタマイズできます。

メッセージ・ゲートウェイ・エージェントがソース・フォーマットから宛先フォーマットへのメッセージ変換に失敗すると、例外キューがある場合は、エージェントによってメッセージがソース・キューから例外キューに移動され、伝播ジョブの処理が続行されます。

伝播ジョブの処理中に障害が発生した場合、メッセージ・ゲートウェイ・エージェントはジョブを停止する前に、指数バックオフ・スキームで最大16回ジョブを再試行します(2秒から最大30分)。

信頼できるメッセージ配信を保証するために、メッセージ・ゲートウェイではトランザクションと永続メッセージをサポートしているメッセージ・システムでロギング・キューが必要になります。メッセージ・ゲートウェイ・エージェントでは、ロギング・キューを使用して伝播ジョブの処理状態を格納し、障害から伝播処理を復元できるようにしています。

Oracle Database AQのバッファ済メッセージとメッセージ・ゲートウェイ

メッセージ・ゲートウェイでは、バッファ済メッセージの伝播はサポートされていません。発信伝播の場合、メッセージ・ゲートウェイ・エージェントはAQキューから永続メッセージのみをデキューします。着信伝播の場合、メッセージ・ゲートウェイ・エージェントは常に永続メッセージをAQキューにエンキューします。

Oracle Messaging Gatewayスタート・ガイド

次のトピックでは、Oracle Messaging Gateway (MGW)の前提条件と、メッセージ・ゲートウェイのロード、設定およびアンロード手順を説明します。また、mgw.ora初期化ファイルの設定および変更方法も説明します。

Oracle Messaging Gatewayの前提条件

メッセージ・ゲートウェイでは、メッセージ・ゲートウェイ・エージェントごとに1つのOracle Schedulerジョブを使用します。JOB_QUEUE_PROCESSESデータベース初期化パラメータの値がゼロの場合、Oracle Schedulerジョブは実行されません。値がゼロ以外の場合、事実上、この値は同時に実行できるSchedulerジョブおよびジョブ・キューのジョブの最大数です。

ゼロではない値が設定され、各メッセージ・ゲートウェイ・エージェントの起動をSchedulerジョブが処理するのに十分な大きさであることを確認してください。

Oracle Messaging Gatewayのロードおよび設定

メッセージ・ゲートウェイを実行する前に、次の手順を実行してください。

データベースへのデータベース・オブジェクトのロード

SQL*Plusを使用して、ユーザーSYSまたはSYSDBAとしてORACLE_HOME/mgw/admin/catmgw.sqlを実行します。このスクリプトによって、ロール、表、ビュー、オブジェクト型およびPL/SQLパッケージを含む、メッセージ・ゲートウェイに必要なデータベース・オブジェクトがロードされます。これによって、メッセージ・ゲートウェイのPL/SQLパッケージのパブリック・シノニムが作成されます。MGW_ADMINISTRATOR_ROLEおよびMGW_AGENT_ROLE,という2つのロールが作成され、特定の権限が付与されます。すべてのオブジェクトは、SYSに所有されます。

ノート:

CDB環境では、ORACLE_HOME/mgw/admin/catmgw.sqlをPDB rootとして実行します。

外部プロシージャのlistener.oraの変更

この手順は、UNIXベースのオペレーティング・システム専用です。Windowsオペレーティング・システムでは、リスナーについての静的サービス情報は必要ありません。

メッセージ・ゲートウェイのPL/SQLパッケージで外部プロシージャがコールされるように、listener.oraを変更する必要があります。

  1. 外部プロシージャのデフォルトのプロセス間通信(IPC)プロトコル・アドレスが設定されていることを確認します。
    LISTENER = (ADDRESS_LIST=
    (ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC))
    
  2. ステップ1のリスナーの静的サービス情報を追加します。リスナーのSID_DESCを設定する必要があります。SID_DESCのうち、表C-1で説明されているパラメータはメッセージ・ゲートウェイで重要なため、使用環境にあわせて指定する必要があります。

例C-1 リスナーの静的サービス情報の追加

# Add a SID_DESC
SID_LIST_LISTENER= (SID_LIST=
(SID_DESC =
   (SID_NAME= mgwextproc)
   (ENVS=
     "LD_LIBRARY_PATH=JRE_HOME/lib/amd64:JRE_HOME/lib/amd64/server:ORACLE_HOME/lib")
   (ORACLE_HOME=ORACLE_HOME)
   (PROGRAM = extproc))

表C-1 SID_DESCパラメータ

パラメータ 説明

SID_NAME

tnsnames.oraのネット・サービス名で指定されているSID。次の例では、SID_NAMEmgwextprocです。

ENVS

外部プロシージャを実行するために必要な環境変数LD_LIBRARY_PATHを設定します。LD_LIBRARY_PATHには次のパスを含める必要があります。

JRE_HOME/lib/PLATFORM_TYPE
JRE_HOME/lib/PLATFORM_TYPE/server
ORACLE_HOME/lib

サード・パーティのメッセージ・システムに必要な追加ライブラリも含まれる必要があります。「Oracle以外のメッセージ・システムの設定」を参照してください。

ENVS値は、LD_LIBRARY_PATH_64 (Oracle Solaris on SPARC (64-Bit)およびOracle Solaris on x86-64 (64-Bit)の場合)、LIBPATH (IBM AIX on POWER Systemsの場合)、およびLD_LIBRARY_PATH (他のプラットフォームの場合)です。

ORACLE_HOME

ユーザーのOracleホーム・ディレクトリ。$ORACLE_HOMEを使用しても機能しません。

PROGRAM

外部プロシージャのエージェントの名前(extproc)。

ノート:

ORACLE_HOMEがOracleインストレーションのルート・ディレクトリを表すように、JRE_HOMEはJREインストレーションのルート・ディレクトリを表します。Oracle DatabaseとともにインストールされたJREの使用をお薦めします。

例C-1では、SID_NAME mgwextprocをLinux x86用のlistener.oraファイルに追加します。

外部プロシージャのtnsnames.oraの変更

外部プロシージャに対して、tnsnames.oraで、例C-2で示したように、接続記述子がlistener.oraで構成された情報に一致するネット・サービス名MGW_AGENTを構成します。ネット・サービス名は、MGW_AGENTである必要があります(この値は固定)。KEYの値は、listener.oraでIPCプロトコルに対して指定されたKEYの値に一致する必要があります。SIDの値は、listener.oraSID_DESCエントリのSID_NAMEに対して指定された値に一致する必要があります。

ノート:

sqlnet.oranames.default_domainパラメータを使用してデフォルト・ドメインを設定した場合は、そのドメインをtnsnames.oraのネット・サービス名MGW_AGENTに追加する必要があります。たとえば、sqlnet.oraにエントリnames.default_domain=acme.comが含まれる場合、tnsnames.oraのネット・サービス名はMGW_AGENT.acme.comである必要があります。

例C-2 MGW_AGENTの構成

MGW_AGENT = 
(DESCRIPTION= 
   (ADDRESS_LIST= (ADDRESS= (PROTOCOL=IPC)(KEY=EXTPROC))) 
   (CONNECT_DATA= (SID=mgwextproc)))
mgw.ora初期化ファイルの設定

メッセージ・ゲートウェイのデフォルトの初期化ファイルORACLE_HOME/mgw/admin/mgw.oraは、テキスト・ファイルです。メッセージ・ゲートウェイの外部プロシージャは、その初期化ファイルを使用して初期化パラメータを取得し、メッセージ・ゲートウェイ・エージェントを起動します。ORACLE_HOME/mgw/admin/sample_mgw.oramgw.oraにコピーし、状況に応じて変更します。

次のプロシージャでは、メッセージ・ゲートウェイのすべてのアプリケーションに必要な環境変数およびその他のパラメータを設定します。

  1. Windowsオペレーティング・システムのみ: MGW_PRE_PATH変数を設定します。この値は、次のjvm.dllライブラリへのパスです。
    set MGW_PRE_PATH = JRE_HOME\bin\client
    

    この変数は、メッセージ・ゲートウェイ・エージェントのプロセスによって継承されたパスの前に付けられます。

  2. CLASSPATHには、少なくとも次のクラスが入っている必要があります。
    • JREランタイム・クラス

      JRE_HOME/lib/rt.jar
      
    • Oracle JDBCクラス

      ORACLE_HOME/jdbc/lib/ojdbc6.jar
      
    • Oracle国際化クラス

      ORACLE_HOME/jlib/orai18n.jar
      
    • SQLJランタイム

      ORACLE_HOME/sqlj/lib/runtime12.jar
      
    • Java Message Service(JMS)インタフェース

      ORACLE_HOME/rdbms/jlib/jmscommon.jar
      
    • Oracle JMS実装クラス

      ORACLE_HOME/rdbms/jlib/aqapi.jar
      
    • JavaトランザクションAPI

      ORACLE_HOME/jlib/jta.jar
      
    • メッセージ・ゲートウェイがOracle以外のメッセージ・システムにアクセスするために必要な追加のクラス

      ノート:

      ORACLE_HOMEには、該当する具体的な値を代入します。たとえば、$ORACLE_HOMEを使用しても機能しません。

      Windowsオペレーティング・システムのユーザーは、Windowsオペレーティング・システムのパス構文を使用してCLASSPATHを設定する必要があります。

Oracle Messaging Gateway管理者ユーザーの作成

メッセージ・ゲートウェイの管理作業を実行するには、例C-3に示したように、MGW_ADMINISTRATOR_ROLE権限を所有するデータベース・ユーザーを作成する必要があります。

例C-3 メッセージ・ゲートウェイ管理者ユーザーの作成

CREATE USER admin_user IDENTIFIED BY admin_password;
GRANT CREATE SESSION to admin_user;
GRANT MGW_ADMINISTRATOR_ROLE to admin_user;
Oracle Messaging Gatewayのエージェント・ユーザーの作成

メッセージ・ゲートウェイ・エージェントからデータベースへの接続を確立するには、例C-4に示したように、MGW_AGENT_ROLE権限を所有するデータベース・ユーザーを作成する必要があります。

例C-4 メッセージ・ゲートウェイ・エージェント・ユーザーの作成

CREATE USER agent_user IDENTIFIED BY agent_password;
GRANT CREATE SESSION to agent_user;
GRANT MGW_AGENT_ROLE to agent_user;
Oracle Messaging Gateway接続情報の構成

メッセージ・ゲートウェイ・エージェント・ユーザーの作成後、管理ユーザーとしてDBMS_MGWADM.ALTER_AGENTを使用し、例C-5に示したように、メッセージ・ゲートウェイ・エージェントによるデータベースへの接続に使用されるユーザー名、パスワードおよびデータベース接続文字列でメッセージ・ゲートウェイを構成します。「Oracle Messaging Gatewayのエージェント・ユーザーの作成」で作成したメッセージ・ゲートウェイのユーザー名とパスワードを使用します。データベース接続文字列パラメータは、tnsnames.oraの新しいサービス名(パフォーマンスを向上させるにはIPCプロトコルを使用)またはNULLのいずれかに設定できます。NULLに設定する場合は、mgw.oraoracle_sidパラメータを設定する必要があります。

このリリースの場合は、DBMS_MGWADM.ALTER_AGENTをコールするとき、常にデータベース接続文字列パラメータに対してNULL以外の値を指定してください。

例C-5 メッセージ・ゲートウェイの接続情報の構成

set echo off
set verify off
connect admin_user
 
ACCEPT password CHAR PROMPT 'Enter the password for AGENT_USER: ' HIDE

EXEC DBMS_MGWADM.ALTER_AGENT(
      agent_name  => 'default_agent', 
      username    => 'agent_user', 
      password    => '&password', 
      database    => 'agent_database');
Oracle RAC環境におけるOracle Messaging Gatewayの構成
メッセージ・ゲートウェイ・エージェント接続に使用する接続情報の構成

メッセージ・ゲートウェイ・エージェントによるすべてのデータベース接続先を、メッセージ・ゲートウェイ・エージェントのプロセスが実行中のインスタンスにする必要があります。これにより、Oracle RAC環境で確実に適切なフェイルオーバー動作が得られます。このように接続を構成するには、インスタンスで少し異なる方法でtnsnames.oraファイルを使用させます。各ファイルには同じネット・サービス名のエントリがありますが、接続データはそのtnsnames.oraファイルに関連付けられているインスタンスのみを参照します。共通のネット・サービス名は、DBMS_MGWADM.ALTER_AGENTを使用してメッセージ・ゲートウェイ・エージェントのデータベース接続情報を構成するときに、データベース・パラメータに使用されます。

たとえば、OraDB1およびOraDB2という2つのインスタンスで構成される2インスタンスOracle RAC環境で、ネット・サービス名AGENT_DBが使用される場合、インスタンスOraDB1tnsnames.oraは次のようになります。

AGENT_DB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = myhost1.mycorp.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = OraDB10.mycorp.com)
      (INSTANCE_NAME = OraDB1)
    )
  )

OraDB2tnsnames.oraは次のようになります。

AGENT_DB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = myhost2.mycorp.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = OraDB10.mycorp.com)
      (INSTANCE_NAME = OraDB2)
    )
  )

その後、次のコマンドを実行して、メッセージ・ゲートウェイ・エージェント・ユーザーの接続情報を構成します。

EXEC DBMS_MGWADM.ALTER_AGENT(
   agent_name   => 'default_agent', 
   username     => 'agent_user', 
   password     => 'agent_password', 
   database     => 'agent_db');
メッセージ・ゲートウェイ・エージェントに対するOracle RACインスタンスの設定

メッセージ・ゲートウェイは、Oracle Schedulerのデータベース・サービス・サポートを活用して、メッセージ・ゲートウェイ・エージェントの外部プロセスのサービス・アフィニティを指定します。デフォルトでは、メッセージ・ゲートウェイ・エージェントは、すべてのインスタンスにマップされているデフォルトのデータベース・サービスを使用します。メッセージ・ゲートウェイ・エージェントが、特定のグループのデータベース・インスタンスで起動するようにするには、これらのインスタンスにデータベース・サービスを作成し、DBMS_MGWADM.CREATE_AGENTまたはDBMS_MGWADM.ALTER_AGENTプロシージャのSERVICEパラメータを使用して、メッセージ・ゲートウェイ・エージェントに割り当てる必要があります。DBMS_MGWADM.STARTUPプロシージャによって、Oracle Schedulerジョブの実行時にメッセージ・ゲートウェイ・エージェントの外部プロセスを開始するSchedulerジョブが送られます。Schedulerジョブは、メッセージ・ゲートウェイ・エージェント用に構成されたデータベース・サービスを使用します。

SERVICEパラメータで指定されるデータベース・サービスは、Oracle Schedulerジョブのサービス・アフィニティ(メッセージ・ゲートウェイの外部プロセスのサービス・アフィニティを含む)にのみ使用されます。メッセージ・ゲートウェイ・エージェント・ユーザーによって作成されたデータベース接続には使用されません。それらのJDBCクライアント接続は、DATABASEおよびCONNTYPEパラメータに指定された値に基づきます。

Oracle以外のメッセージ・システムの設定

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

TIB/Rendezvousの設定

TIB/Rendezvous Javaクライアント・アプリケーションとして実行する場合、メッセージ・ゲートウェイ・エージェントには、メッセージ・ゲートウェイ・エージェントが実行されるコンピュータ上にTIB/Rendezvousソフトウェアをインストールする必要があります。この項では、TIBRV_HOMEはインストールされたTIB/Rendezvousソフトウェアの場所を参照します。

listener.oraの変更

Linux Operating Systemの場合は、メッセージ・ゲートウェイのエントリのLD_LIBRARY_PATHには、TIB/Rendezvous共有ライブラリ・ファイルにアクセスするためのエージェントのTIBRV_HOME/libを含める必要があります。

Windowsオペレーティング・システムの場合は、listener.oraを変更する必要はありません。ただし、システム環境変数PATHTIBRV_HOME\binを含める必要があります。

mgw.oraの変更

MGW_PRE_PATHには、通常TIBRV_HOME/binにあるTIB/Rendezvousライセンス・チケット・ファイル(tibrv.tkt)が入っているディレクトリを含める必要があります。

CLASSPATHには、TIB/Rendezvous jarファイルTIBRV_HOME/lib/tibrvj.jarを含める必要があります。独自にカスタマイズされたTIB/Rendezvousアドバイザ・メッセージ・コールバックを使用する場合は、コールバック・クラスの場所も含める必要があります。

次のJavaプロパティを設定して、デフォルトの設定を変更します。

例C-6 Javaプロパティの設定

setJavaProp oracle.mgw.tibrv.encoding=ISO8859_1
setJavaProp oracle.mgw.tibrv.intraProcAdvSubjects=_RV.>
setJavaProp oracle.mgw.tibrv.advMsgCallback=MyadvCallback
WebSphere MQ Base JavaまたはJMSの設定

JavaおよびJMSのWebSphere MQクライアントとWebSphere MQクラスは、メッセージ・ゲートウェイ・エージェントが作動するコンピュータ上にインストールする必要があります。この項では、MQ_HOMEはインストール済クライアントの場所を参照します。Linux Operating Systemの場合は、この場所は常に/opt/mqmです。Windowsオペレーティング・システムの場合は、インストール場所を変更できます。

listener.oraの変更

メッセージ・ゲートウェイによるWebSphere MQへのアクセスには、listener.oraの変更は必要ありません。

mgw.oraの変更

WebSphere MQ Base Java (JMS以外)インタフェースを使用する場合は、「mgw.ora初期化ファイルの設定」の設定以外に少なくとも次のパスを含むようにCLASSPATHを設定する必要があります。

  • MQ_HOME/java/lib/com.ibm.mq.jar

  • MQ_HOME/java/lib/connector.jar

WebSphere MQ JMSインタフェースを使用する場合は、CLASSPATHを設定して、「mgw.ora初期化ファイルの設定」の設定以外に少なくとも次のパスを含める必要があります。

  • MQ_HOME/java/lib/com.ibm.mqjms.jar

  • MQ_HOME/java/lib/com.ibm.mq.jar

  • MQ_HOME/java/lib/connector.jar

Oracle Messaging Gateway設定の検証

次の手順を実行して、設定を検証します。この手順には、メッセージ・ゲートウェイ・エージェントの単純な起動および停止が含まれます。

  1. データベース・リスナーを起動します。

    外部プロシージャに対するリスナーおよび通常のデータベース接続に対する他のリスナーを起動します。

  2. メッセージ・ゲートウェイ・エージェント・ユーザーに対してデータベース接続文字列をテストします。

    sqlplus agent_user/agent_password@agent_databaseを実行します。

    正常に終了した場合、メッセージ・ゲートウェイ・エージェントをデータベースに接続できます。

  3. Linux Operating Systemのみ: 外部プロシージャのコールに使用するネット・サービス・エントリをテストします。

    sqlplus agent_user/agent_password@MGW_AGENTを実行します。

    これは「ORA-28547: サーバーへの接続が失敗しました。Oracle Net管理エラーの可能性があります」を表示して失敗します。これ以外のエラーは、tnsnames.oralistener.oraあるいはその両方が正しくないことを示します。

  4. admin_userとして接続し、DBMS_MGWADM.STARTUPをコールしてメッセージ・ゲートウェイ・エージェントを起動します。
  5. MGW_GATEWAYビューを使用して、AGENT_STATUSRUNNINGに、AGENT_PINGREACHABLEに変わるまで待ちます。
  6. admin_userとして接続し、DBMS_MGWADM.SHUTDOWNをコールしてメッセージ・ゲートウェイ・エージェントを停止します。
  7. MGW_GATEWAYビューを使用して、AGENT_STATUSNOT_STARTEDに変わるまで待ちます。

Oracle Messaging Gatewayのアンロード

メッセージ・ゲートウェイをアンロードする手順は、次のとおりです。

  1. メッセージ・ゲートウェイを停止します。
  2. ペイロードがメッセージ・ゲートウェイ標準型(SYS.MGW_BASIC_MSG_Tなど)であるユーザー作成のキューを削除します。
  3. SQL*Plusを使用して、ユーザーSYSまたはSYSDBAとしてORACLE_HOME/mgw/admin/catnomgw.sqlを実行します。

    これによって、ロール、表、ビュー、パッケージ、オブジェクト型およびシノニムを含む、メッセージ・ゲートウェイによって使用されるデータベース・オブジェクトが削除されます。

  4. listener.oraおよびtnsnames.oraで作成したメッセージ・ゲートウェイのエントリを削除します。

mgw.ora初期化ファイルについて

メッセージ・ゲートウェイ・エージェントを起動すると、メッセージ・ゲートウェイによって、テキスト・ファイルから初期化情報が読み込まれます。初期化ファイルには、初期化パラメータ、環境変数およびJavaプロパティを設定するための行が含まれています。各エントリは1行に指定する必要があります。先頭の空白は、すべての場合に切り捨てられます。

メッセージ・ゲートウェイの管理者は、DBMS_MGWADM.CREATE_AGENTおよびDBMS_MGWADM.ALTER_AGENTにより、メッセージ・ゲートウェイ・エージェントに使用される初期化ファイルを指定できます。初期化ファイルが指定されない場合、デフォルトの初期化ファイルが使用されます。

デフォルトのエージェントのデフォルト初期化ファイルは、ORACLE_HOME/mgw/admin/mgw.oraにあります。

指定されたエージェントのデフォルト初期化ファイルはORACLE_HOME/mgw/admin/mgw_AGENTNAME.oraで、AGENTNAMEは、メッセージ・ゲートウェイ・エージェントの名前を大文字で表記したものです。たとえば、エージェント名がmy_agentの場合、エージェントのデフォルト初期化ファイルはORACLE_HOME/mgw/admin/mgw_MY_AGENT.oraです。指定されたエージェントのデフォルトの初期化ファイルが検出されなかった場合、ORACLE_HOME/mgw/admin/mgw.oraが使用されます。

mgw.oraの初期化パラメータ

通常、初期化パラメータは、「name=value<NL>」という書式の行で指定されます。ここで、nameはパラメータ名、valueはパラメータの値、<NL>は改行を表します。

log_directory

使用方法:

メッセージ・ゲートウェイのログ・ファイルまたはトレース・ファイルが作成されるディレクトリを指定します。

形式:

log_directory = value

デフォルト:

ORACLE_HOME/mgw/log

例:

log_directory = /private/mgwlog

log_level

使用方法:

メッセージ・ゲートウェイ・エージェントによって記録されるロギングの詳細レベルを指定します。ロギング・レベルは、メッセージ・ゲートウェイ・エージェントの実行中にDBMS_MGWADM.SET_LOG_LEVELをコールすることで動的に変更できます。Oracleでは、常にログレベル0(デフォルト値)を使用することをお薦めします。

形式:

log_level = value

値:

0: 基本的なロギングの場合に使用します。これは、DBMS_MGWADM.BASIC_LOGGINGと同じです。

1: 低レベルのトレースの場合に使用します。これは、DBMS_MGWADM.TRACE_LITE_LOGGINGと同じです。

2: 高レベルのトレースの場合に使用します。これは、DBMS_MGWADM.TRACE_HIGH_LOGGINGと同じです。

3: デバッグ・トレースの場合に使用します。これは、DBMS_MGWADM.TRACE_DEBUG_LOGGINGと同じです。

4: 高レベルのデバッグ・トレースの場合に使用します。これは、DBMS_MGWADM.TRACE_DEBUG_HIGH_LOGGINGと同じです

例:

log_level = 0
mgw.oraの環境変数

ユーザーは、メッセージ・ゲートウェイの処理環境を直接制御できないため、初期化ファイルを使用して特定の環境変数を設定する必要があります。現在、メッセージ・ゲートウェイ・エージェントによって使用されている環境変数は、CLASSPATHMGW_PRE_PATHおよびORACLE_SIDです。

CLASSPATHおよびMGW_PRE_PATHなどの環境変数は、メッセージ・ゲートウェイ・エージェントが必要な共有オブジェクトやJavaクラスなどを検出できるように設定されます。環境変数は、「set env_var=value<NL>」または「setenv env_var=value<NL>」という書式の行で指定されます。ここで、env_varは設定する環境変数の名前、valueは環境変数の値、<NL>は改行を表します。

CLASSPATH

使用方法:

Oracle Database Advanced QueuingとOracle以外のメッセージ・システム間の伝播のために、メッセージ・ゲートウェイ・エージェントに必要なJavaクラスを検索するJava Virtual Machineによって使用されます。

形式:

set CLASSPATH=value

例:

set CLASSPATH=ORACLE_HOME/jdbc/lib/ojdbc6.jar:JRE_HOME/lib/rt.jar:
ORACLE_HOME/sqlj/lib/runtime12.jar:ORACLE_HOME/jlib/orai18n.jar:ORACLE_HOME/rdbms/
jlib/jmscommon.jar:ORACLE_HOME/rdbms/jlib/aqapi.jar:ORACLE_HOME/jlib/jta.jar:
/opt/mqm/java/lib/com.ibm.mq.jar:/opt/mqm/java/lib/com.ibm.mqjms.jar:/opt/mqm/java
/lib/connector.jar

MGW_PRE_PATH

使用方法:

メッセージ・ゲートウェイのプロセスによって継承されたパスの先頭に追加されます。Windowsオペレーティング・システムの場合、この変数を設定してライブラリjvm.dllが存在する位置を指定する必要があります。

形式:

set MGW_PRE_PATH=value

例:

set MGW_PRE_PATH=JRE_HOME\bin\client

ORACLE_SID

使用方法:

メッセージ・ゲートウェイの構成時にサービス名が指定されていない場合に使用できます。

形式:

set ORACLE_SID=value

例:

set ORACLE_SID=my_sid
mgw.ora Javaプロパティ

TIB/Rendezvousサブジェクトを使用する場合、メッセージ・ゲートウェイJVMのJavaシステム・プロパティを指定する必要があります。これには、メッセージ・ゲートウェイ初期化ファイルのsetJavaPropパラメータを使用できます。Javaプロパティは、「setJavaProp prop_name=value<NL>」という書式の行で指定されます。ここで、prop_nameは設定するJavaプロパティの名前、valueはJavaプロパティの値、<NL>は改行記号を表します。

oracle.mgw.batch_size

使用方法:

このJavaプロパティは、1つのトランザクションで伝播されるメッセージの最大数を表します。メッセージ・ゲートウェイのジョブ・オプションMsgBatchSizeが指定されていない場合のデフォルト値として機能します。デフォルトから変更された場合、予期されるメッセージのサイズとメッセージ・ゲートウェイ・エージェントのメモリーを考慮する必要があります(DBMS_MGWADM.ALTER_AGENTmax_memoryパラメータを参照)。このJavaプロパティの最小値は1、最大値は100で、デフォルトは30です。

構文:

setJavaProp oracle.mgw.batch_size=value

例:

setJavaProp oracle.mgw.batch_size=10

oracle.mgw.polling_interval

使用方法:

このパラメータは、伝播元キューの使用可能メッセージのポーリング間の経過時間(1000分の1秒単位)を指定します。メッセージ・ゲートウェイで使用されるデフォルトのポーリング間隔は5000ミリ秒(5秒)です。このJavaプロパティの最小値は100ミリ秒で、最大値は60秒です。

構文:

setJavaProp oracle.mgw.polling_interval=value 

例:

setJavaProp oracle.mgw.polling_interval=1000 

oracle.mgw.tibrv.encoding

使用方法:

このパラメータでは、TIB/Rendezvousメッセージ・システム・リンクで使用される文字エンコードを指定します。TIB/Rendezvous制約により、すべての構成済TIB/Rendezvousリンクに許可されている文字セットは1つのみです。デフォルトは、ISO 8859-1またはJavaシステム・プロパティfile.encodingによって指定された文字セットです。

構文:

setJavaProp oracle.mgw.tibrv.encoding=value 

例:

setJavaProp oracle.mgw.tibrv.encoding=ISO8859_1 

oracle.mgw.tibrv.intraProcAdvSubjects

使用方法:

このパラメータはすべてのTIB/Rendezvousメッセージ・システム・リンクに使用され、プロセス内転送で表示されるシステム勧告サブジェクトの名前を指定します。

構文:

setJavaProp oracle.mgw.tibrv.intraProcAdvSubjects=
advisorySubjectName[:advisorySubjectName]

例:

setJavaProp oracle.mgw.tibrv.intraProcAdvSubjects=_RV.>

oracle.mgw.tibrv.advMsgCallback

使用方法:

このパラメータはすべてのTIB/Rendezvousメッセージ・システム・リンクに使用され、TibrvMsgCallbackインタフェースを実装してシステム勧告メッセージを処理するJavaクラスの名前を指定します。指定されていない場合は、メッセージ・ゲートウェイによって提供されるデフォルトのシステム勧告メッセージ・ハンドラが使用され、メッセージ・ゲートウェイのログ・ファイルにシステム勧告メッセージが書き込まれます。指定されている場合は、クラス・ファイルが格納されているディレクトリがmgw.oraCLASSPATHに含まれている必要があります。

構文:

setJavaProp oracle.mgw.tibrv.advMsgCallback=className

例:

setJavaProp oracle.mgw.tibrv.advMsgCallback=MyAdvCallback

oracle.net.tns_admin

使用方法:

このパラメータはtnsnames.oraファイルのディレクトリを指定します。メッセージ・ゲートウェイ・エージェントがJDBC Thinドライバを使用するよう構成されており、エージェントの接続情報のデータベース指定子がTNSNamesの別名の場合、設定する必要があります。JDBC OCIドライバが使用されている場合や、データベース指定子がTNSNamesの別名ではない場合は、設定する必要はありません。

構文:

setJavaProp oracle.net.tns_admin=value

例:

setJavaProp oracle.net.tns_admin=/myoraclehome/network/admin
mgw.oraコメント行

コメント行は、行の先頭に#という文字を使用して指定されます。

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ロールが付与されているデータベース・ユーザーで構成される必要があります。

例C-7では、myagentという名前のエージェントを作成し、エージェント・ユーザーのデータベース接続情報を指定します。デフォルト値は、その他すべてのパラメータに対して使用されます。

例C-7 メッセージ・ゲートウェイ・エージェントの作成

SQL> exec DBMS_MGWADM.CREATE_AGENT(
                         agent_name  => 'myagent',
                         username    => 'mgwagent',
                         password    => 'mgwagent_password',
                         database    => 'mydatabase');
メッセージ・ゲートウェイ・エージェントの削除

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

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

SQL> exec DBMS_MGWADM.REMOVE_AGENT(agent_name   => 'myagent');
データベース接続の設定

メッセージ・ゲートウェイ・エージェントは、データベースの外部プロセスとして実行されます。Oracle Database Advanced Queuingおよびメッセージ・ゲートウェイ・パッケージにアクセスするには、メッセージ・ゲートウェイ・エージェントからデータベースへの接続を確立する必要があります。DBMS_MGWADM.ALTER_AGENTを使用して、メッセージ・ゲートウェイ・エージェントがデータベース接続の確立に使用するユーザー名、パスワードおよびデータベース接続文字列を設定できます。メッセージ・ゲートウェイ・エージェントを起動するには、ユーザーにMGW_AGENT_ROLEが付与されている必要があります。

例C-9は、ネット・サービス名mydatabaseを使用して、パスワードmgwagent_passwordのユーザーmgwagentに対して構成されているメッセージ・ゲートウェイのデフォルトのエージェントを示したものです。

例C-9 データベース接続情報の設定

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によって作成されるときにこれらの値を指定することもできます。

例C-10では、myagentというエージェントについて、ヒープ・サイズ96MB、伝播スレッド2を設定します。

メッセージ・ゲートウェイ・エージェントを実行中に、メモリー・ヒープ・サイズと伝播スレッド数は変更できません。

例C-10 リソース制限の設定

SQL> exec DBMS_MGWADM.ALTER_AGENT(
                        agent_name  => 'myagent',
                        max_memory  => 96,
                        max_threads => 2);

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

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

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

メッセージ・ゲートウェイ・エージェントが構成されたら、DBMS_MGWADM.STARTUPを使用して起動できます。例C-11に、デフォルトのエージェントおよびmyagentエージェントの起動方法を示します。

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

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

SQL> exec DBMS_MGWADM.STARTUP;
SQL> exec DBMS_MGWADM.STARTUP ('myagent');
Oracle Messaging Gatewayのエージェントの停止

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

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

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

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サーバーのホスト名およびポート番号

    • キュー・マネージャ名

    • チャネル名

    • ユーザー名とパスワード

  • 許可されるメッセージ・コネクションの最大数

  • 着信伝播および発信伝播のログ・キュー名

  • オプション情報の例

    • 送信、受信およびセキュリティの終了

    • 文字セット

例C-13では、WebSphere MQ Base Javaリンクmqlinkを構成します。このリンクは、WebSphere MQチャネルmychannelを使用して、ホストmyhost.mydomainおよびポート1414上のWebSphere MQキュー・マネージャmy.queue.managerを使用するように構成されます。

この例では、WebSphere MQ SendExitクラスを登録するオプションも設定します。クラスmySendExitは、mgw.oraCLASSPATHセットにある必要があります。メッセージ・ゲートウェイのデフォルトのエージェント(DEFAULT_AGENT)は、リンク、およびそのリンクを使用するすべての伝播ジョブを処理する必要があります。

関連項目:

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

  • オプション情報の例

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

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

関連項目:

例C-14 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クライアント認証を使用するように構成されている場合のみに必要です。

例C-15では、SSL_RSA_WITH_RC4_128_MD5暗号スイートを使用して、WebSphere MQ Base JavaリンクmqssllinkでSSL接続を使用するよう構成します。リンクに関連付けられたメッセージ・ゲートウェイ・エージェントDEFAULT_AGENTにキーストアおよびトラストストアの両方のJavaプロパティを構成できるよう、チャネルがSSLクライアント認証用に構成されていると仮定しています。

DBMS_MGWADM.SET_OPTIONによって設定されるJavaプロパティはエージェントの初回起動時にのみ設定されるため、この構成は、メッセージ・ゲートウェイ・エージェントの停止時に実行される必要があります。構成時にエージェントが実行中の場合は、エージェントを停止し、SSL接続の使用前に再起動する必要があります。

例C-15 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回のメッセージ配信のみを保証できます。

例C-16では、ローカル・コンピュータ上でrvdデーモンに接続するrvlinkという名前のTIB/Rendezvousリンクを構成します。リンクに対してエージェント名は指定されず、メッセージ・ゲートウェイのデフォルトのエージェント(DEFAULT_AGENT)は、リンクおよびそのリンクを使用するすべての伝播ジョブを処理する必要があります。

例C-16 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を使用して変更できます。メッセージ・ゲートウェイ・エージェントを実行中または停止中でもリンク情報を変更できます。例C-17では、リンクmqlinkを変更して、max_connectionsプロパティを変更します。

関連項目:

メッセージ・ゲートウェイ・エージェントを実行中の変更に関する制限については、「構成プロパティ」を参照してください。

例C-17 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で削除できます。メッセージ・ゲートウェイ・エージェントを実行中または停止中でもリンクを削除できます。例C-18では、リンクmqlinkを削除します。

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

BEGIN
  dbms_mgwadm.remove_msgsystem_link(linkname =>'mqlink');
END;
メッセージ・システム・リンクのビュー

MGW_LINKSビューで作成されたリンクを確認できます。例C-19で示されているように、名前とリンク・タイプが表示されます。

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

例C-19 すべてのメッセージ・ゲートウェイのリンクのリスト

SQL> select link_name, link_type from MGW_LINKS;
 
LINK_NAME     LINK_TYPE 
------------------------
MQLINK        MQSERIES
RVLINK        TIBRV

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

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以外のメッセージ・システム固有のオプション

    これらのオプションは、{名前, 値}の組(いずれも文字列)の集合です。

例C-21は、メッセージ・ゲートウェイ・キューdestqとしてWebSphere MQ Base Javaキューmy_mq_queueを登録する方法を示したものです。

例C-21 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で登録を解除できます。

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

例C-22 Oracle以外のキューの登録解除

BEGIN
  DBMS_MGWADM.UNREGISTER_FOREIGN_QUEUE(name =>'destq', linkname=>'mqlink');
END;
Oracle以外の登録済キューのビュー

例C-23に示すとおりMGW_FOREIGN_QUEUESビューを使用して、どのOracle以外のキューが登録され、それぞれがどのリンクを使用しているかをチェックできます。

例C-23 登録済キューの確認

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

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

ノート:

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

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

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を使用します。ジョブが無効化されている場合、いずれの伝播処理も発生しません。

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

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

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

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

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

BEGIN
  DBMS_MGWADM.DISABLE_JOB(job_name => 'job_aq2mq');
END;
伝播ジョブのリセット

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

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

例C-27 伝播ジョブのリセット

BEGIN
  DBMS_MGWADM.RESET_JOB (job_name => 'job_aq2mq');
END;
伝播ジョブの変更

伝播ジョブが作成されたら、DBMS_MGWADM.ALTER_JOBを使用して、そのジョブの選択ルール、変換、例外キュー、ジョブ・オプションおよびポーリング間隔を変更できます。メッセージ・ゲートウェイ・エージェントを実行中または停止中でもジョブを変更できます。

例C-28では、伝播ジョブの例外キューを追加します。

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

例C-28 例外キューの追加による伝播ジョブの変更

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

例C-29 ポーリンク間隔変更による伝播ジョブの変更

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には、可能なかぎり強制オプションを使用しないことをお薦めします。

例C-30では、強制しない方法で伝播ジョブを削除します。

例C-30 伝播ジョブの削除

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

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

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

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

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

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

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システム・プロパティ

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

表C-3 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)

表C-3に関するノート

  • 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リンク・オプションを使用して指定できます。

表C-4は、WebSphere MQメッセージ・システムへのアクセスにWebSphere MQ Base Javaインタフェースが使用される場合にサポートされているオプションの構成プロパティをまとめたものです。表C-5は、WebSphere MQ JMSインタフェースが使用される場合にサポートされているオプションの構成プロパティをまとめたものです。それぞれの表は、プロパティ名、そのプロパティの適用場所、プロパティを変更できるかどうか、値を動的に変更可能かどうかを示しています。サポートされているのはこの表に示すプロパティのみで、その他のプロパティは無視されます。

表C-4 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"

ジョブ

表C-5 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システム・プロパティ

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

表C-6 TIB/Rendezvousリンク・プロパティ

属性 NULL許可 値の変更 動的変更

service

可(1)

不可

不可

daemon

可(1)

不可

不可

network

可(1)

不可

不可

cm_name

可(2)

不可

不可

cm_ledger

可(2)

不可

不可

表C-6に関するノート:

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

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

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

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

Oracle Messaging Gatewayのメッセージの変換

次のトピックでは、Oracle Messaging Gateway (MGW)がメッセージ・フォーマットを1つのメッセージ・システムから別のメッセージ・システムに変換する方法について説明します。通常、変換が必要になるのはメッセージをOracle Database Advanced Queuingと別のシステムの間で移動する場合で、これは異なるメッセージ・システムでは異なるメッセージ・フォーマットが使用されているためです。Java Message Service (JMS)メッセージは特殊です。JMSメッセージはJMS宛先にのみ伝播可能なので、変換は単純な処理になります。

Oracle Messaging GatewayのJMS以外のメッセージの変換

MGWでは、伝播中に、ソース側メッセージ・システム固有のメッセージ・フォーマットが宛先側メッセージ・システム固有のメッセージ・フォーマットに変換されます。MGWでは、標準型およびOracle Database Advanced Queuingベースのモデルを使用して変換が行われます。

JMS以外のメッセージ変換プロセスの概要

MGWによってメッセージが伝播される場合、メッセージはソース・キュー・システム固有のフォーマットから宛先キュー・システム固有のフォーマットに変換されます。

ネイティブなメッセージには、通常、メッセージ・ヘッダーとメッセージ本体が含まれます。ヘッダーには、メッセージ・システム内のすべてのメッセージに存在する固定ヘッダー・フィールドが含まれます。たとえば、Oracle Database Advanced Queuingのメッセージ・プロパティやWebSphere MQの固定ヘッダーなどです。本体には、Oracle Database Advanced Queuingのペイロード、WebSphere MQのメッセージ本体、またはTIB/Rendezvousのメッセージ全体などのメッセージ・コンテンツが含まれます。MGWでは、メッセージ・ヘッダーおよびメッセージ本体コンポーネントの両方が変換されます。

図C-2は、2つのステージでJMS以外のメッセージを変換する方法を示したものです。メッセージは、最初にソース・キューのシステム固有のフォーマットからMGWの内部メッセージ・フォーマットに変換され、次に、内部メッセージ・フォーマットから宛先キューのシステム固有のフォーマットに変換されます。

図C-2 JMS以外のメッセージの変換

図C-2の説明が続きます
「図C-2 JMS以外のメッセージの変換」の説明

MGWエージェントでは、Oracle Database Advanced Queuingのメッセージ・プロパティに類似したヘッダーと、MGWの標準型で表される本体で構成された、内部メッセージ・フォーマットが使用されます。

Oracle Messaging Gateway標準型

MGWでは標準型が定義され、Oracle Database Advanced QueuingとOracle以外のメッセージ・システム間でのメッセージ変換がサポートされます。標準型は、メッセージ型をOracle DatabaseでのPL/SQL Oracleタイプの形式で表したものです。標準型は、RAWSYS.MGW_BASIC_MSG_TおよびSYS.MGW_TIBRV_MSG_Tです。

WebSphere MQ伝播では、標準型SYS.MGW_BASIC_MSG_TおよびRAWがサポートされます。TIB/Rendezvous伝播では、標準型SYS.MGW_TIBRV_MSG_TおよびRAWがサポートされます。

関連項目:

SYS.MGW_BASIC_MSG_TおよびSYS.MGW_TIBRV_MSG_Tの構文および属性情報は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_MGWMSGに関する項を参照してください。

メッセージ・ヘッダーの変換

MGWでは、Oracle Database Advanced Queuingメッセージ・プロパティと、同じセマンティクスのOracle Database Advanced Queuingメッセージ・プロパティに対応する値を含むOracle以外のメッセージ・ヘッダー・フィールドとの間で、デフォルトのマッピングが行われます。MGWによってマッピングが行われない場合、メッセージ・ヘッダー・フィールドはデフォルト値(通常、メッセージ・システムによって定義されたデフォルト値)に設定されます。

メッセージ変換を使用した任意のペイロード型の処理

Oracle Database Advanced Queuingメッセージ間で変換する場合、MGWエージェントでは通常、標準型のみが使用されます。ただし、任意のペイロード型は、Oracle Database Advanced Queuingのキュー・ペイロードとMGW標準型間で変換するために、ユーザー定義のOracle Database Advanced Queuingのメッセージ変換機能によってサポートされます。

任意のADTペイロード(発信伝播)によってOracle Database Advanced Queuingのキューからメッセージを伝播するMGWには、MGWの標準ユーザー定義型に対するマッピングが必要です。変換は、MGWエージェントによってOracle Database Advanced Queuingのキューからメッセージがデキューされると起動されます。同様に、任意のADTペイロード(着信伝播)によってOracle Database Advanced Queuingのキューにメッセージを伝播するMGWには、MGWの標準ADTからのマッピングが必要です。変換は、MGWエージェントによってOracle Database Advanced Queuingのキューにメッセージがエンキューされると起動されます。

図C-3 Oracle Database Advanced Queuingのメッセージ変換

図C-3の説明が続きます
「図C-3 Oracle Database Advanced Queuingメッセージの変換」の説明

変換は常にMGWエージェントとの関連で実行されますが、これはMGWエージェント・ユーザー(DBMS_MGWADM.CREATE_AGENTまたはDBMS_MGWADM.ALTER_AGENTを使用して指定したユーザー)には、変換ファンクションおよびOracle Database Advanced Queuingペイロード型に対するEXECUTE権限が必要であることを意味しています。これは、PUBLICEXECUTE権限を付与するか、またはMGWエージェントのユーザーに直接EXECUTE権限を付与することによって実現できます。

変換によってMGW伝播ジョブを構成するには:

  1. 変換ファンクションを作成します。
  2. MGWエージェントのユーザーまたはPUBLICに、ファンクションおよびそのファンクションが参照するオブジェクト型に対するEXECUTE権限を付与します。
  3. DBMS_TRANSFORM.CREATE_TRANSFORMATIONをコールして、変換を登録します。
  4. 変換によってMGW伝播ジョブを作成する場合はDBMS_MGWADM.CREATE_JOBを、既存のジョブを変更する場合はDBMS_MGWADM.ALTER_JOBをコールします。

例C-31 変換ファンクションの署名

FUNCTION trans_sampleadt_to_mgw_basic(in_msg IN mgwuser.sampleADT)
RETURN SYS.MGW_BASIC_MSG_T;

例C-32に示すように、DBMS_TRANSFORM.CREATE_TRANSFORMATIONを使用して変換を作成できます。

例C-32 変換の作成

BEGIN
  DBMS_TRANSFORM.CREATE_TRANSFORMATION(
        schema         => 'mgwuser',
        name           => 'sample_adt_to_mgw_basic',
        from_schema    => 'mgwuser',
        from_type      => 'sampleadt',
        to_schema      => 'sys',
        to_type        => 'MGW_BASIC_MSG_T',
        transformation => 'mgwuser.trans_sampleadt_to_mgw_basic(user_data)');
END;

例C-33 変換の登録

BEGIN
  DBMS_MGWADM.CREATE_JOB(
    job_name          =>   'job_aq2mq',
    propagation_type  =>    DBMS_MGWADM.OUTBOUND_PROPAGATION,
    source            =>   'mgwuser.srcq',
    destination       =>   'destq.mqlink',
    transformation    =>   'mgwuser.sample_adt_to_mgw_basic',
    exception_queue   =>   'mgwuser.excq');
END;

これらのAPIの変換パラメータに渡される値は、ファンクション名ではなく登録された変換名である必要があります。たとえば、trans_sampleadt_to_mgw_basicは、例C-31で示した署名によって変換ファンクションを表すストアド・プロシージャです。

ノート:

この例のすべてのコマンドは、変換を作成するコマンドを除き、MGW_ADMINISTRATOR_ROLEが付与されたユーザーとして実行する必要があります。

いったん作成した後は、伝播ジョブの作成時にこの変換をMGWに登録できます。例C-33ではジョブjob_aq2mqを作成します。これのメッセージはOracle Database Advanced Queuingのキューmgwuser.srcqからOracle以外のメッセージ・システム・キューdestq@mqlinkに変換mgwuser.sample_adt_to_mgw_basicを使用して伝播されます。

通常、ユーザー定義の変換を実行中に発生するエラーはメッセージ変換例外とみなされ、メッセージは例外キューに移動されます(存在する場合)。

関連項目:

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_MGWADM、DBMS_MGWMSGおよびDBMS_TRANSFORMに関する項

論理変更レコードの処理

MGWでは、論理変更レコード(LCR)を伝播する機能を提供しています。変換の作成を支援し、ペイロード型ANYDATAでキューに格納されているLCR行およびDDL LCRの両方の伝播を処理するルーチンが提供されています。LCRは、適切なメッセージ型で格納されているXML文字列として伝播されます。

ノート:

LCR伝播については、XDBパッケージをロードする必要があります。

Oracle Streamsでは、ANYDATAキューを使用してLCRを格納するため、ANYDATAキューが発信伝播のソースとなります。変換では最初にMGWルーチンDBMS_MGWMSG.LCR_TO_XMLを使用して、LCRを含むANYDATAオブジェクトをXML型オブジェクトに変換する必要があります。ANYDATAオブジェクトにLCRが含まれない場合は、このルーチンでエラーが発生します。次に、LCRのXML文書の文字列がXML型から抽出され、適切なMGW標準型(SYS.MGW_BASIC_MSG_TまたはSYS.MGW_TIBRV_MSG_T)に配置されます。

例C-34は、LCR発信伝播用に使用される変換を簡素化して示したものです。変換によって、LCRを含むANYDATAペイロードがSYS.MGW_TIBRV_MSG_Tオブジェクトに変換されます。LCRをXML文書として表す文字列が、ORACLE_LCRというフィールドに配置されます。

LCR着信伝播の場合、MGW標準型(SYS.MGW_BASIC_MSG_TまたはSYS.MGW_TIBRV_MSG_T)が変換ソースの型となります。LCRをXML文書のフォーマットで表す文字列は、標準型に含まれる必要があります。変換ファンクションはメッセージから文字列を抽出し、そこからXML型オブジェクトを作成し、MGWルーチンDBMS_MGWMSG.XML_TO_LCRを使用してLCRを含むANYDATAオブジェクトに変換する必要があります。元のXML文書がLCRを表していない場合は、このルーチンでエラーが発生します。

例C-35は、LCR着信伝播用に使用される変換を簡素化して示したものです。変換によって、LCRを表すXML文字列を含むフィールドがあるSYS.MGW_TIBRV_MSG_Tオブジェクトが、ANYDATAオブジェクトに変換されます。LCRをXML文書として表す文字列が、ORACLE_LCRというフィールドから取得されます。

関連項目:

例C-34 発信LCRの変換

create or replace function any2tibrv(adata in anydata)
return SYS.MGW_TIBRV_MSG_T is
    v_xml   XMLType;
    v_text  varchar2(2000);
    v_tibrv sys.mgw_tibrv_msg_t;
BEGIN
    v_xml   := dbms_mgwmsg.lcr_to_xml(adata);
    -- assume the lcr is smaller than 2000 characters long.
    v_text  := v_xml.getStringVal();
    v_tibrv := SYS.MGW_TIBRV_MSG_T.CONSTRUCT;
    v_tibrv.add_string('ORACLE_LCR', 0, v_text);
    return v_tibrv;
END any2tibrv;

例C-35 着信LCRの変換

create or replace function tibrv2any(tdata in sys.mgw_tibrv_msg_t)
return anydata is 
    v_field   sys.mgw_tibrv_field_t;
    v_xml     XMLType;
    v_text    varchar2(2000);
    v_any     anydata;
BEGIN
    v_field := tdata.get_field_by_name('ORACLE_LCR');
    -- type checking
    v_text  := v_field.text_value;
    -- assume it is not null
    v_xml  := XMLType.createXML(v_text);
    v_any  := dbms_mgwmsg.xml_to_lcr(v_xml); 
    return v_any;
END tibrv2any;

WebSphere MQに対するメッセージ変換

MGWによって、MGW標準型とWebSphere MQ固有のメッセージ・フォーマット間の変換が行われます。WebSphere MQ固有のメッセージは、固定されたメッセージ・ヘッダーとメッセージ本体で構成されます。メッセージ本体は、TEXT値またはRAW(バイト)値のいずれかとして処理されます。WebSphere MQ伝播用にサポートされている標準型は、SYS.MGW_BASIC_MSG_TRAWです。

図C-4 MGW_BASIC_MSG_Tを使用したWebSphere MQのメッセージ変換

図C-4の説明が続きます
「図C-4 MGW_BASIC_MSG_Tを使用したWebSphere MQのメッセージ変換」の説明

図C-4は、MGW WebSphere MQドライバで標準型SYS.MGW_BASIC_MSG_Tを使用して実行されるメッセージ変換を示したものです。発信伝播の場合、ドライバによって、Oracle Database Advanced Queuingメッセージ・プロパティおよび標準型メッセージが、固定ヘッダーおよびメッセージ本体を含むWebSphere MQシステム固有のメッセージにマップされます。着信伝播の場合、ドライバによって、システム固有のメッセージが一連のOracle Database Advanced Queuingメッセージ・プロパティおよび標準型メッセージにマップされます。標準型がRAWの場合、標準型ヘッダーが存在しないこと以外はマッピング方法は同じです。

WebSphere MQメッセージ・ヘッダーのマッピング

MGW発信伝播ジョブで使用される標準型がRAWの場合、WebSphere MQヘッダー情報はRAWメッセージ本体からは設定されません。同様に着信伝播の場合、WebSphere MQヘッダー情報はRAWメッセージ本体には保持されません。ただし、MGW標準型SYS.MGW_BASIC_MSG_Tには、発信伝播のWebSphere MQヘッダー・フィールドを指定する際に使用でき、さらに着信伝播のWebSphere MQヘッダー・フィールドを保持できるヘッダーがあります。

この項では、SYS.MGW_BASIC_MSG_Tを標準型として使用してWebSphere MQメッセージ・システムに対してサポートされているメッセージ・プロパティについて説明します。表C-8に、WebSphere MQヘッダー・プロパティの記述に使用されるMGWの{名前, 値}の組の定義を示します。最初の列は、SYS.MGW_BASIC_MSG_TヘッダーのSYS.MGW_NAME_VALUE_T.NAMEフィールドの有効文字列値です。2番目の列は、名前に対応するSYS.MGW_NAME_VALUE_T.TYPE値です。(括弧内の数値の詳細は、各行はメッセージ・ゲートウェイの名前に対応します。第1列は名前、第2列はメッセージ・ゲートウェイの型、第3列は対応するWebSphere MQプロパティ名、第4列はその用途を示します。を参照してください。)

着信伝播の場合、WebSphere MQドライバによって、ソース・メッセージ・ヘッダーに基づいて{名前, 値}の組が生成され、SYS.MGW_BASIC_MSG_T型の標準型メッセージのヘッダー部分に格納されます。発信伝播の場合、WebSphere MQドライバによって、SYS.MGW_BASIC_MSG_T標準型メッセージのヘッダー部分に格納されたこれらのプロパティに対する{名前, 値}の組から、メッセージ・ヘッダーおよびエンキュー・オプションが設定されます。

表C-8 WebSphere MQのヘッダー値に対するMGWの名前

MGWの名前 MGWの型 WebSphere MQプロパティ名 使用対象
MGW_MQ_accountingToken
RAW_VALUE (size 32)
accountingToken

発信(1)、着信

MGW_MQ_applicationIdData
TEXT_VALUE (size 32)
applicationIdData 

発信(1)、着信

MGW_MQ_applicationOriginData
TEXT_VALUE (size 4)
applicationOriginData

発信(1)、着信

MGW_MQ_backoutCount
INTEGER_VALUE
backoutCount

着信

MGW_MQ_characterSet
INTEGER_VALUE
characterSet

発信、着信

MGW_MQ_correlationId
RAW_VALUE (size 24)
correlationId

発信(1)、着信

MGW_MQ_encoding
INTEGER_VALUE
encoding

発信、着信

MGW_MQ_expiry
INTEGER_VALUE
expiry

発信、着信

MGW_MQ_feedback
INTEGER_VALUE
feedback

発信、着信

MGW_MQ_format
TEXT_VALUE (size 8)
format

発信(1)、着信

MGW_MQ_groupId
RAW_VALUE (size 24)
groupId

発信(1)、着信

MGW_MQ_messageFlags
INTEGER_VALUE
messageFlags

発信、着信

MGW_MQ_messageId
RAW_VALUE (size 24)
messageId

発信、着信

MGW_MQ_messageSequenceNumber
INTEGER_VALUE
messageSequenceNumber

発信、着信

MGW_MQ_messageType
INTEGER_VALUE
messageType

発信、着信

MGW_MQ_offset
INTEGER_VALUE
offset

発信、着信

MGW_MQ_originalLength
INTEGER_VALUE
originalLength

発信、着信

MGW_MQ_persistence
INTEGER_VALUE
persistence

着信

MGW_MQ_priority
INTEGER_VALUE
priority

発信、着信

MGW_MQ_putApplicationName
TEXT_VALUE (size 28)
putApplicationName

発信(1)、着信

MGW_MQ_putApplicationType
INTEGER_VALUE
putApplicationType

発信(1)、着信

MGW_MQ_putDateTime
DATE_VALUE
putDateTime

着信

MGW_MQ_putMessageOptions
INTEGER_VALUE
putMessageOptions

発信 (1) (2)

MGW_MQ_replyToQueueManagerName
TEXT_VALUE (size 48)
replyToQueueManagerName

発信、着信

MGW_MQ_replyToQueueName
TEXT_VALUE (size 48)
replyToQueueName

発信、着信

MGW_MQ_report
INTEGER_VALUE
report

発信(1)、着信

MGW_MQ_userId
TEXT_VALUE (size 12)
userId

発信、着信

表C-8に関するノート

  1. この表での使用方法には、WebSphere MQの制約が適用されます。たとえば、送信メッセージに対してMGW_MQ_accountingTokenが設定されている場合、WebSphere MQの値は、MGW_MQ_putMessageOptionsがWebSphere MQ定数のMQPMD_SET_ALL_CONTEXTに設定されていないかぎり、オーバーライドされます。

  2. MGW_MQ_putMessageOptionsは、WebSphere MQ Base Java Queue.put()メソッドのputMessageOptions引数として使用されています。WebSphere MQのヘッダー情報の一部ではないため、実際のメッセージのプロパティではありません。

    WebSphere MQ Base JavaのMQQueueManager.accessQueueメソッドに対するopenOptions引数の値は、DBMS_MGWADM.REGISTER_FOREIGN_QUEUEをコールしてWebSphere MQキューが登録されるときに指定されます。これらの値の間には依存関係が存在する場合があります。たとえば、MGW_MQ_putMessageOptionsMQPMD_SET_ALL_CONTEXTを含めるには、MQ_openMessageOptionsキュー・オプションにMQOO_SET_CONTEXTを含める必要があります。

    MGWエージェントによって、指定可能なすべての値にMQPMO_SYNCPOINTという値が追加されます。

MGWによって、次の2つのWebSphere MQのメッセージ・ヘッダー・フィールドのデフォルト値が設定されます。messageTypeのデフォルト値はMQMT_DATAGRAMに、putMessageOptionsのデフォルト値はMQPMO_SYNCPOINTに設定されます。

MGWには、Oracle Database Advanced Queuingのメッセージ・プロパティとWebSphere MQのヘッダー・フィールド間の2つのデフォルト・マッピングがあります。

1つは、キュー内でメッセージが使用可能になったときのメッセージのTime-to-Liveを表すOracle Database Advanced Queuingのメッセージ・プロパティのexpirationを、メッセージのTime-to-Liveを表すWebSphere MQのヘッダー・フィールドのexpiryにマップします。発信伝播の場合、expiryに使用する値はキュー内でメッセージが使用可能になった時刻をexpirationから引き算し、10分の1秒単位の値に変換します。Oracle Database Advanced Queuing値NEVERは、MQEI_UNLIMITEDにマップされます。着信伝播の場合、expirationは単に秒単位に変換されたexpiryです。WebSphere MQ値のMQEI_UNLIMITEDは、NEVERにマップされます。

その他のデフォルトは、Oracle Database Advanced Queuingのメッセージ・プロパティのpriorityをWebSphere MQのヘッダー・フィールドのpriorityとともにマップします。表C-9で説明します。

表C-9 伝播のデフォルト優先順位のマッピング

伝播型 メッセージ・システム 優先度の値

発信

Oracle Databaseアドバンスト・キューイング

0

1

2

3

4

5

6

7

8

9

発信

WebSphere MQ

9

8

7

6

5

4

3

2

1

0

着信

Oracle Databaseアドバンスト・キューイング

9

8

7

6

5

4

3

2

1

0

着信

WebSphere MQ

0

1

2

3

4

5

6

7

8

9

ノート:

発信伝播の場合、0未満のOracle Database Advanced Queuing優先順位は、WebSphere MQ優先順位9にマップされ、9より大きいOracle Database Advanced Queuing優先順位はWebSphere MQ優先順位0にマップされます。

WebSphere MQ発信伝播

発信伝播用のメッセージ変換が指定されていない場合は、Oracle Database Advanced Queuingのソース・キューのペイロード型は、SYS.MGW_BASIC_MSG_TまたはRAWである必要があります。メッセージ変換が指定されている場合、変換のターゲットのADTはSYS.MGW_BASIC_MSG_Tである必要がありますが、ソースのADTはOracle Database Advanced Queuingによってサポートされている任意のADTが有効です。

Oracle Database Advanced QueuingキューのペイロードがRAWの場合、WebSphere MQから取得されるメッセージには、RAWバイトの値に設定されたメッセージ本体と、デフォルトでは「MGW_Byte」値に設定されたformatフィールドがあります。

Oracle Database Advanced Queuingキューのペイロードまたは変換ターゲットのADTがSYS.MGW_BASIC_MSG_Tの場合、メッセージは次のようにWebSphere MQの固有メッセージにマップされます。

  • WebSphere MQの固定ヘッダー・フィールドは、「WebSphere MQメッセージ・ヘッダーのマッピング」で説明されているように、標準型メッセージの内部Oracle Database Advanced Queuingメッセージ・プロパティおよびSYS.MGW_BASIC_MSG_T.header属性に基づいています。

  • 標準型メッセージにTEXT本体がある場合は、WebSphere MQのフォーマット・ヘッダー・フィールドは、ヘッダー・プロパティMGW_MQ_formatによってオーバーライドされないかぎりMQFMT_STRINGに設定されます。メッセージ本体はテキストとみなされます。

  • 標準型メッセージにRAW本体がある場合は、WebSphere MQのフォーマット・ヘッダー・フィールドは、ヘッダー・プロパティMGW_MQ_formatによってオーバーライドされないかぎりMGW_Byteに設定されます。メッセージ本体はRAWバイトとみなされます。

  • 標準型メッセージに、TEXTおよびRAWの両方の本体が含まれる場合、メッセージ変換は失敗します。

  • 標準型メッセージに、TEXT本体またはRAW本体のいずれも含まれていない場合、メッセージ本体は設定されず、WebSphere MQフォーマット・ヘッダー・フィールドはMQFMT_NONEとなります。

  • 標準型メッセージに小さい値セットと大きい値セット(空ではないSYS.MGW_BASIC_MSG_T.TEXT_BODY.small_valueおよびSYS.MGW_BASIC_MSG_T.TEXT_BODY.large_value)の両方があるTEXT本体が含まれる場合は、メッセージ変換は失敗します。

  • 標準型メッセージに小さい値セットと大きい値セット(空ではないSYS.MGW_BASIC_MSG_T.RAW_BODY.small_valueおよびSYS.MGW_BASIC_MSG_T.RAW_BODY.large_value)の両方があるRAW本体が含まれる場合は、メッセージ変換は失敗します。

ジョブ・オプションPreserveMessageIDが値TRUEに指定されている場合、WebSphereメッセージ・ヘッダーのcorrelationIdフィールドはAQのソース・メッセージ識別子に設定されます。correlationIdの値は"AQMSGID:"+AQ_msgidという書式の24バイト値で、AQ_msgidは16バイトのDatabase AQメッセージ識別子を表します。

WebSphere MQ着信伝播

着信伝播用のメッセージ変換が指定されていない場合は、Oracle Database Advanced Queuingの宛先キューのペイロード型は、SYS.MGW_BASIC_MSG_TまたはRAWである必要があります。メッセージ変換が指定されている場合、変換のソースのADTはSYS.MGW_BASIC_MSG_Tである必要がありますが、宛先のADTはOracle Database Advanced Queuingによってサポートされている任意のユーザー定義型が有効です。

Oracle Database Advanced QueuingキューのペイロードがRAWで、着信WebSphere MQメッセージにMQFMT_STRINGformatが含まれる場合、メッセージ変換は失敗します。そうでない場合は、メッセージ本体はRAWバイトとみなされ、宛先キューに直接エンキューされます。バイト数が32KBを超える場合は、メッセージ変換は失敗します。実際の限度は、32767バイトではなく32512バイトです。

Oracle Database Advanced Queuingキューのペイロードまたは変換ソースのADTがSYS.MGW_BASIC_MSG_Tの場合、WebSphere MQメッセージは次のようにSYS.MGW_BASIC_MSG_Tメッセージにマップされます。

  • 特定のWebSphere MQのヘッダー・フィールドは、前に説明したようにOracle Database Advanced Queuingのメッセージ・プロパティにマップされます。

  • 標準型メッセージのSYS.MGW_BASIC_MSG_T.header属性は、表C-8に示すとおり、WebSphere MQヘッダー・フィールドに基づいて{名前, 値}の組に設定されます。これらの値は、WebSphere MQのメッセージ・ヘッダーの当初の内容を保持します。

  • WebSphere MQのformatヘッダー・フィールドがMQFMT_STRINGの場合、WebSphere MQのメッセージ本体はテキストとして処理され、その値はSYS.MGW_BASIC_MSG_T.text_bodyにマップされます。他のformat値の場合、メッセージ本体はRAWバイトとして処理され、その値はSYS.MGW_BASIC_MSG_T.raw_bodyにマップされます。

TIB/Rendezvousに対するメッセージ変換

MGWでは、TIB/Rendezvousメッセージはフィールドのセットおよび追加情報とみなされます。図C-5は、MGWとTIB/Rendezvousの間におけるメッセージの変換方法を示したものです。

図C-5 TIB/Rendezvousに対するメッセージ変換

図C-5の説明が続きます。
「図C-5 TIB/Rendezvousに対するメッセージ変換」の説明

メッセージ変換障害が発生すると、メッセージはMGWによって、ソース・キュー内の残りのメッセージの伝播を続行できるように例外キュー(例外キューがある場合)に移されます。TIB/Rendezvousからの着信伝播では、例外キューは登録済サブジェクトです。

TIB/RendezvousのフィールドのTIB/Rendezvousのワイヤ・フォーマットのデータ型は、符号のない整数およびネストされたメッセージ型以外はすべてサポートされています。今回のリリースでは、ユーザー定義のカスタム・データ型はサポートされていません。メッセージにサポートされていないデータ型のデータが含まれる場合は、処理時にメッセージ変換障害が発生します。メッセージ変換障害が発生すると、例外キューがある場合は、失敗したメッセージはソース・キューから例外キューに移されます。

表C-10は、MGWがTIB/Rendezvousの固有メッセージと標準のADTとで変換を行う場合に使用されるデータ型マッピングを示したものです。サポートされているTIB/Rendezvousの各ワイヤ・フォーマット型に対して、データの格納に使用されるOracleタイプおよびその型を表すDBMS_MGWMSG定数が示されています。

表C-10 TIB/Rendezvousデータ型のマッピング

TIB/Rendezvousワイヤ・フォーマット Oracle型 ADTフィールド型

Bool

NUMBER

TIBRVMSG_BOOL

F32

NUMBER

TIBRVMSG_F32

F64

NUMBER

TIBRVMSG_F64

I8

NUMBER

TIBRVMSG_I8

I16

NUMBER

TIBRVMSG_I16

I32

NUMBER

TIBRVMSG_I32

I64

NUMBER

TIBRVMSG_I64

U8

サポートされません

サポートされません

U16

サポートされません

サポートされません

U32

サポートされません

サポートされません

U64

サポートされません

サポートされません

IPADDR32

VARCHAR2

TIBRVMSG_IPADDR32

IPPORT16

NUMBER

TIBRVMSG_IPPORT16

DATETIME

DATE

TIBRVMSG_DATETIME

F32ARRAY

SYS.MGW_NUMBER_ARRAY_T

TIBRVMSG_F32ARRAY

F64ARRAY

SYS.MGW_NUMBER_ARRAY_T

TIBRVMSG_F64ARRAY

I8ARRAY

SYS.MGW_NUMBER_ARRAY_T

TIBRVMSG_I8ARRAY

I16ARRAY

SYS.MGW_NUMBER_ARRAY_T

TIBRVMSG_I16ARRAY

I32ARRAY

SYS.MGW_NUMBER_ARRAY_T

TIBRVMSG_I32ARRAY

I64ARRAY

SYS.MGW_NUMBER_ARRAY_T

TIBRVMSG_I64ARRAY

U8ARRAY

サポートされません

サポートされません

U16ARRAY

サポートされません

サポートされません

U32ARRAY

サポートされません

サポートされません

U64ARRAY

サポートされません

サポートされません

MSG

サポートされません

サポートされません

OPAQUE

RAWまたはBLOB

TIBRVMSG_OPAQUE

STRING

VARCHAR2またはCLOB

TIBRVMSG_STRING

XML

RAWまたはBLOB

TIBRVMSG_XML

Oracle Database Advanced QueuingおよびTIB/Rendezvous間の伝播の場合、MGWは、Oracle Database Advanced Queuingのペイロード型RAWおよびSYS.MGW_TIBRV_MSG_Tを直接サポートします。その他のOracle Database Advanced Queuingのペイロード型をサポートするには、変換を指定する必要があります。

TIB/Rendezvousに対するAQメッセージ・プロパティ・マッピング

この項では、Oracle Database AQのメッセージ・プロパティとTIB/Rendezvousのフィールドの間のマッピングについて説明します。このマッピングを使用して、発信伝播中にはDatabase AQメッセージ・プロパティが保持され、着信伝播中にはDatabase AQメッセージ・プロパティが設定されます。

表C-11は、TIB/Rendezvousのフィールドを使用してサポートされているDatabase AQメッセージ・プロパティを示したものです。第1列は、Database AQメッセージ・プロパティのDBMS_AQ.MESSAGE_PROPERTIES_Tフィールドを示します。第2列と第3列は、TIB/Rendezvousのフィールドに使用される名前とデータ型を示します。最後の列は、メッセージ・プロパティが着信伝播と発信伝播に対してサポートされているかどうかを示します。

表C-11 Oracle Database Advanced Queuingメッセージ・プロパティに対するTIB/RendezvousおよびMGWの名前

Oracle Database Advanced Queuingメッセージ・プロパティ MGWの名前 TIB/Rendezvousワイヤ・フォーマット・データ型 使用対象

priority

MGW_AQ_priority

TibrvMsg.I32

発信、着信

expiration

MGW_AQ_expiration

TibrvMsg.I32

発信、着信

delay

MGW_AQ_delay

TibrvMsg.I32

発信、着信

correlation

MGW_AQ_correlation

TibrvMsg.STRING

発信、着信

exception_queue

MGW_AQ_exception_queue

TibrvMsg.STRING

発信、着信

enqueue_time

MGW_AQ_enqueue_time

TibrvMsg.DATETIME

発信

original_msgid

MGW_AQ_original_msgid

TibrvMsg.OPAQUE

発信

msgid (1)

MGW_AQ_messageID

TibrvMsg.OPAQUE

発信

表C-11に関するノート

  1. Database AQプロパティmsgidは、DBMS_AQ.MESSAGE_PROPERTIES_Tレコードの特定のフィールドではなくDatabase AQメッセージ識別子を表します。

TIB/Rendezvous発信伝播

発信伝播に対する伝播変換が指定されていない場合は、Oracle Database Advanced Queuingのソース・キューのペイロード型は、SYS.MGW_TIBRV_MSG_TまたはRAWである必要があります。伝播変換が指定されている場合、変換のターゲットのADTはSYS.MGW_TIBRV_MSG_Tである必要がありますが、ソースのADTはOracle Database Advanced Queuingによってサポートされている任意のADTが有効です。

Oracle Database Advanced Queuingキューのペイロードまたは変換ターゲットのADTがSYS.MGW_TIBRV_MSG_Tの場合は、次のようになります。

  • ソース・メッセージのすべてのフィールドは、TIB/Rendezvousから取得されるメッセージのTIB/Rendezvousメッセージ・フィールドに変換されます。

  • reply_subject属性がNULLではない場合は、応答サブジェクトの追加情報が設定されます。

  • send_subjectフィールドは無視されます。

Oracle Database Advanced QueuingキューのペイロードがRAWの場合は、次のようになります。

  • 結果メッセージには、値がTibrvMsg.OPAQUEMGW_RAW_MSGという名前のフィールドが含まれます。フィールドIDは0に設定されます。

ジョブ・オプションAQ_MsgPropertiesが値TRUEに指定されている場合は、MGWエージェントによって、TIB/Rendezvousメッセージの各Database AQメッセージ・プロパティを保持するフィールドが表C-11に従って生成されます。

ジョブ・オプションPreserveMessageIDが値TRUEに指定されている場合、Database AQメッセージID (msgid)は表C-11に従ってTIB/Rendezvousメッセージに保持されます。

TIB/Rendezvous着信伝播

着信伝播に対する伝播変換が指定されていない場合、Oracle Database Advanced Queuingの宛先キューのペイロード型はRAWまたはSYS.MGW_TIBRV_MSG_Tである必要があります。伝播変換が指定されている場合、変換ターゲットのADTにはOracle Database Advanced Queuingでサポートされている任意のADTが有効ですが、変換ソースのADTはSYS.MGW_TIBRV_MSG_Tである必要があります。

Oracle Database Advanced Queuingキューのペイロードまたは変換ソースのADTがSYS.MGW_TIBRV_MSG_Tの場合は、次のようになります。

  • TIB/Rendezvousのソース・メッセージの個々のフィールドは、結果としてSYS.MGW_TIBRV_MSG_T型のメッセージのフィールドに変換されます。

  • MGWエージェントによって、TIB/Rendezvousのソース・メッセージから送信サブジェクト名を抽出し、SYS.MGW_TIBRV_MSG_Tsend_subject属性を設定します。通常、送信サブジェクト名は登録済の伝播ソース・キューのサブジェクト名と同じですが、ワイルドカードを使用する場合は異なる場合があります。

  • MGWエージェントによって、TIB/Rendezvousのソース・メッセージから応答サブジェクト名を抽出し、SYS.MGW_TIBRV_MSG_Treply_subject属性を設定します。

  • TIB/Rendezvousのソース・メッセージに3つを超える大きなテキスト・フィールド(4000バイトを超えるテキスト)または3つを超える大きなバイト・フィールド(2000バイトを超える)が含まれる場合は、メッセージ変換は失敗します。

Oracle Database Advanced QueuingキューのペイロードがRAWの場合は、次のようになります。

  • TIB/Rendezvousのソース・メッセージにTibrvMsg.OPAQUE型またはTibrvMsg.XML型のMGW_RAW_MSGという名前のフィールドが含まれる場合、Oracle Database Advanced Queuingのメッセージ・ペイロードはフィールド・データです。フィールド名とIDは無視されます。該当するフィールドがない、またはフィールドの型が予想したものと異なる場合は、メッセージ変換障害が発生します。

  • RAWデータ・サイズが32KBを超える場合は、メッセージ変換障害が発生します。これは、バインド変数に許可されたデータ・サイズ制限によるものです。また、実際の限度は32767ではなく32512です。

ジョブ・オプションAQ_MsgPropertiesが値TRUEで指定されている場合は、MGWエージェントによって、TIB/Rendezvousの当初のメッセージの中から予約したフィールド名のフィールドが検索されます。表C-11は、フィールド名文字列とTIB/Rendezvousのメッセージで使用される対応する値を示したものです。

該当するフィールドがある場合は、MGWエージェントでは、デフォルト値ではなくフィールド値を使用して対応するOracle Database Advanced Queuingのメッセージ・プロパティが設定されます。同じ名前のフィールドが複数ある場合は、最初のフィールドのみが使用されます。Oracle Database Advanced Queuingのキュー・ペイロードがRAWの場合のみ、フィールドが結果のペイロードから削除されます。予約名のあるフィールドのデータ型が予想したものと異なる場合は、メッセージ変換障害が発生します。

関連項目:

データ型の値は、『PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_MGWMSGに関する項を参照してください。

JMSメッセージ

MGWではメッセージの内容を変更することなく、Oracle JMSシステムとOracle JMS以外のシステム間でJMSメッセージのみを伝播します。図C-6は、JMSメッセージ伝播を示したものです。

MGWでは、標準のJMSメッセージ・タイプのみサポートしています。次のものはサポートしていません。

  • JMSプロバイダの拡張機能。これらの拡張機能は宛先JMSシステムで認識されないためです。このようなJMS以外のメッセージの伝播を試みると、エラー・メッセージが表示されます。

  • JMS伝播用のユーザー変換。

  • 論理変更レコード(LCR)の伝播。

図C-6 JMSメッセージの伝播

図C-6の説明が続きます。
「図C-6 JMSメッセージの伝播」の説明

この説明のために、JMSメッセージは5つのJMSメッセージ・インタフェースの1つを実装するクラスのJavaオブジェクトとします。表C-12は、JMSメッセージ・インタフェースと、それに対応するOracle JMSのADTを示しています。また表には、5つの特定の型のいずれかであるインタフェースのjavax.jms.Message、および一般的なOracle JMS型のSYS.AQ$_JMS_MESSAGEも示します。

表C-12 Oracle JMSメッセージの変換

JMSメッセージ ADT

javax.jms.TextMessage

SYS.AQ$_JMS_TEXT_MESSAGE

javax.jms.BytesMessage

SYS.AQ$_JMS_BYTES_MESSAGE

javax.jms.MapMessage

SYS.AQ$_JMS_MAP_MESSAGE

javax.jms.StreamMessage

SYS.AQ$_JMS_STREAM_MESSAGE

javax.jms.ObjectMessage

SYS.AQ$_JMS_OBJECT_MESSAGE

javax.jms.Message

SYS.AQ$_JMS_MESSAGE

伝播ジョブを有効にするとMGWエージェントによって、伝播ソースまたは宛先に対するOracle Database Advanced Queuingのペイロード型がチェックされます。型が、表C-12に示した型またはANYDATAである場合は、メッセージ伝播が実行されます。そうでない場合は、例外が記録され伝播は実行されません。

MGWエージェントが、OracleMGW_OriginalMessageIDというJMS Stringプロパティを宛先キューに送信されたJMSメッセージに追加する場合があります。これは、ソース・メッセージの元のメッセージ識別子を保持するためです。このプロパティは、PreserveMessageIDジョブ・オプションがTRUEという値で指定された場合に追加されます。また、メッセージの変換が失敗した際に例外キューに移動されるすべてのメッセージにも追加されます。

JMS発信伝播

Oracle Database Advanced Queuingキューからメッセージをデキューすると、Oracle JMSによって表C-12に示すADTのインスタンスがJMSメッセージに変換されます。さらに、ANYDATAのインスタンスを内容に応じてJMSメッセージに変換できます。

ペイロード型ANYDATAのキューは、JMSメッセージにマップされないメッセージを保持できます。MGWではメッセージのデキューはできません。エラーが記録され、そのキューからのメッセージの伝播はメッセージが削除されるまで続行されません。

JMS着信伝播

WebSphere MQ JMSを使用して正常にデキューされるメッセージは、すべてJMSメッセージです。Oracle JMSを使用してエンキューする前にメッセージを変換する必要はありません。ただし、伝播宛先のペイロードのユーザー定義型が着信メッセージの型を受け入れない場合は例外が記録され、メッセージが例外キュー内に配置されます。このような型の不一致の例には、JMS TextMessageとキュー・ペイロード型SYS.AQ$_JMS_BYTES_MESSAGEなどがあります。

Oracle Messaging Gatewayの監視

次のトピックでは、Oracle Messaging Gateway (MGW)のエージェントの監視方法、ユーザーが経験する異常状態、メッセージ・ゲートウェイのエラーと例外に関する複数ソースの情報および推奨される改善措置を説明します。

Oracle Messaging Gatewayのログ・ファイル

メッセージ・ゲートウェイ・エージェントの状態、履歴およびエラーは、メッセージ・ゲートウェイのログ・ファイルに記録されます。メッセージ・ゲートウェイ・エージェントが起動されるたびに、異なるログ・ファイルが作成されます。あらゆるエラー、起動時に読み込まれた設定情報または動的設定情報はログ・ファイルに書き込まれているため、ログ・ファイルを監視する必要があります。

デフォルトのエージェントのログ・ファイル名のフォーマットは次のとおりです。

oramgw-hostname-timestamp-processid.log

指定エージェントのログ・ファイル名のフォーマットは次のとおりです。

oramgw-AGENTNAME-hostname-timestamp-processid.log

デフォルトで、メッセージ・ゲートウェイのログ・ファイルは、ORACLE_HOME/mgw/logにあります。この場所は、エージェントで使用されるメッセージ・ゲートウェイの初期化ファイル(通常、mgw.ora)内のlog_directoryパラメータで上書きできます。

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

Oracle Messaging Gatewayのログ・ファイル・サンプル

次のサンプル・ログ・ファイルは、メッセージ・ゲートウェイ・エージェントの起動を示しています。サンプル・ログ・ファイルには、リンク、登録された外部キュー、サブスクライバおよびスケジュールが追加されたことが表示されます。また、伝播ジョブがアクティブ化されていることも示されています。最後の行は、メッセージ・ゲートウェイが起動され、実行中であり、メッセージを伝播する準備が完了していることを示しています。

例C-36 メッセージ・ゲートウェイのサンプル・ログ・ファイル

>>2007-01-16 15:04:49 MGW C-Bootstrap 0 LOG process-id=11080
Bootstrap program starting
>>2007-01-16 15:04:50 MGW C-Bootstrap 0 LOG process-id=11080
JVM created -- heapsize = 64
>>2007-01-16 15:04:53 MGW Engine 0 200 main
MGW Agent version: 11.1.0.0
>>2007-01-16 15:04:53 MGW AdminMgr 0 LOG main
Connecting to database using connect string = jdbc:oracle:oci:@INST1
>>2007-01-16 15:05:00 MGW Engine 0 200 main
MGW Component version: 11.1.0.3.0
>>2007-01-16 15:05:01 MGW Engine 0 200 main
MGW agent name: DEFAULT_AGENT, MGW job instance id: 273006EC6ED255F1E040578C6D021A8C, MGW database instance: 1
>>2007-01-16 15:05:09 MGW Engine 0 1 main
Agent is initializing.
>>2007-01-16 15:05:09 MGW Engine 0 23 main
The number of worker threads is set to 1.
>>2007-01-16 15:05:09 MGW Engine 0 22 main
The default polling interval is set to 5000ms.
>>2007-01-16 15:05:09 MGW MQD 0 LOG main
Creating MQSeries messaging link:
link : MQLINK
link type : Base Java interface
queue manager : my.queue.manager
channel : channel1
host : my.machine
port : 1414
user :
ccdt url : 
ssl cipherSuite : 
connections : 1
inbound logQ : logq1
outbound logQ : logq2
>>2007-01-16 15:05:09 MGW Engine 0 4 main
Link MQLINK has been added.
>>2007-01-16 15:05:09 MGW Engine 0 7 main
Queue DESTQ@MQLINK has been registered; provider queue: MGWUSER.MYQUEUE.
>>2007-01-16 15:05:09 MGW Engine 0 9 main
Propagation Schedule JOB_AQ2MQ (MGWUSER.MGW_BASIC_SRC --> DESTQ@MQLINK) has been
added.
>>2007-01-16 15:05:09 MGW AQN 0 LOG main
Creating AQ messaging link:
link : oracleMgwAq
link type : native
database : INST1
user : MGWAGENT
connection type : JDBC OCI
connections : 1
inbound logQ : SYS.MGW_RECV_LOG
outbound logQ : SYS.MGW_SEND_LOG
>>2007-01-16 15:05:10 MGW Engine 0 19 main
MGW propagation job JOB_AQ2MQ has been activated.
>>2007-01-16 15:05:10 MGW Engine 0 14 main
MGW propagation job JOB_AQ2MQ (MGWUSER.MGW_BASIC_SRC --> DESTQ@MQLINK) has been added.
>>2007-01-16 15:05:11 MGW Engine 0 2 main
Agent is up and running.
Oracle Messaging Gatewayのログ・ファイルにおける例外メッセージの解釈

メッセージ・ゲートウェイのログ・ファイルに記録された例外メッセージには、ログ・ファイル内で[Linked-exception]と特定された1つ以上のリンクされた例外が含まれる場合があります。これが問題の原因を特定するための最も便利な方法となります。たとえば、リンクされた例外には、Oracleエラー・メッセージ、PL/SQLスタック・トレースまたはその両方を含むjava.sql.SQLExceptionがあります。

次の例は、無効な値(bad_service_name)がDBMS_MGWADM.CREATE_AGENTまたはDBMS_MGWADM.ALTER_AGENTdatabaseパラメータに指定された場合の、メッセージ・ゲートウェイのログ・ファイルからのエントリを示したものです。この場合、メッセージ・ゲートウェイ・エージェントではデータベース接続を確立できません。

例C-37 例外メッセージ・サンプル

>>2003-07-22 15:27:26  MGW  AdminMgr  0  LOG  main
Connecting to database using connect string = jdbc:oracle:oci8:@BAD_SERVICE_NAME
>>2003-07-22 15:27:29  MGW  Engine  0  EXCEPTION  main
oracle.mgw.admin.MgwAdminException: [241]  Failed to connect to database. SQL
error: 12154, connect string: jdbc:oracle:oci8:@BAD_SERVICE_NAME
[ …Java stack trace here…]
[Linked-exception]
java.sql.SQLException: ORA-12154: TNS:could not resolve the connect identifier
specified
[ …Java stack trace here…]
>>2003-07-22 15:27:29  MGW  Engine  0  25  main
Agent is shutting down.

Oracle Messaging Gatewayのエージェント・ステータスの監視

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

MGW_GATEWAYビュー

MGW_GATEWAYビューでは、メッセージ・ゲートウェイ・エージェントの進捗を監視します。エージェントの監視に使用できるフィールドは、次のとおりです。

  • AGENT_NAME

  • AGENT_INSTANCE

  • AGENT_PING

  • AGENT_STATUS

  • LAST_ERROR_MSG

  • SERVICE

AGENT_STATUSフィールドには、エージェントのステータスが表示されます。この列に有効な値は、次のとおりです。

NOT_STARTED

エージェントが実行されず、実行されるスケジュールもないことを示します。

START_SCHEDULED

エージェント・ジョブがジョブ・スケジューラによって実行されるのを待機中であることを示します。

STARTING

エージェントが起動プロセス中であることを示します。

INITIALIZING

エージェントが起動済で設定データを読込み中であることを示します。

RUNNING

エージェントで、使用可能メッセージの伝播または動的な設定変更のプロセスの準備が完了していることを示します。

SHUTTING_DOWN

エージェントが停止プロセス中であることを示します。

BROKEN

エージェントのプロセスの起動時に、メッセージ・ゲートウェイが他のエージェントが実行中であることを検出したことを示します。通常の使用状態でこのような状況が発生することはありません。

AGENT_PINGフィールドを問い合せると、メッセージ・ゲートウェイ・エージェントがpingされます。この値は、REACHABLEまたはUNREACHABLEのいずれかになります。ステータスがRUNNINGのエージェントは、常にREACHABLEである必要があります。

LAST_ERROR_MSGLAST_ERROR_DATEおよびLAST_ERROR_TIMEの列には、メッセージ・ゲートウェイ・エージェントの起動時または実行時にエラーが発生した場合に有効な情報が表示されます。AGENT_INSTANCEは、メッセージ・ゲートウェイのインスタンスが起動されたOracle Databaseのインスタンスを示します。

関連項目:

MGW_GATEWAYビューの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_MGWADMに関する項を参照してください。

Oracle Messaging Gatewayのリカバリ不能なエラー・メッセージ

MGW_GATEWAYビューのAGENT_STATUSフィールドにあるNOT_STARTEDのステータスは、メッセージ・ゲートウェイ・エージェントが実行中でないことを示します。AGENT_STATUSNOT_STARTEDで、LAST_ERROR_MSGフィールドがNULLでない場合は、メッセージ・ゲートウェイ・エージェントが起動中または実行中にリカバリ不能なエラーが発生したことを示します。メッセージ・ゲートウェイのログ・ファイルが生成済であり、なんらかのエラーが表示されていないかどうかを確認します。ログ・ファイルが存在しない場合、メッセージ・ゲートウェイ・エージェントのプロセスは起動されなかった可能性があります。

この項では、MGW_GATEWAYビューのLAST_ERROR_MSGフィールドに表示されるエラー・メッセージの原因と解決方法を説明します。特に他で記述がないかぎり、メッセージ・ゲートウェイ・エージェントでは、これらのエラーが発生した場合に、自動的に再起動することはありません。

ORA-01089: 即時シャットダウン処理中 - 操作はできません。

エージェントを実行中のインスタンスで、実行中のOracleデータベース・インスタンスを停止するSHUTDOWN IMMEDIATEコマンドが使用されたため、メッセージ・ゲートウェイ・エージェントは停止されました。エージェントは、実行が設定されている次の使用可能データベース・インスタンスで自動的に再起動されます。

ORA-06520: PL/SQL: 外部ライブラリのロード中にエラーが発生しました。

共有ライブラリがロードされていないため、メッセージ・ゲートウェイ・エージェントのプロセスを起動できませんでした。Java共有ライブラリがライブラリ・パスにない可能性があります。listener.oraのライブラリ・パスが正しく設定されていることを確認してください。

ORA-28575: 外部プロシージャ・エージェントへのRPC接続をオープンできません。

メッセージ・ゲートウェイ・エージェントが起動されませんでした。自動的に再起動されます。

次の原因が考えられます。

  • リスナーが実行されていません。listener.oraを変更した場合は、リスナーを停止してから再起動して変更を有効にする必要があります。

  • tnsnames.oralistener.oraまたはその両方の値が正しくありません。

    特に、tnsnames.oraには、MGW_AGENTというネット・サービス名エントリが必要です。このエントリは、Windowsのメッセージ・ゲートウェイには必要ありません。tnsnames.oraMGW_AGENTネット・サービス名のCONNECT_DATAに指定されているSID値は、listener.oraSID_DESCエントリのSID_NAME値と一致している必要があります。MGW_AGENTネット・サービス名がプロセス間通信(IPC)接続用に設定されている場合、tnsnames.oralistener.oraADDRESSKEY値が一致している必要があります。sqlnet.oranames.default_domainパラメータを使用してデフォルト・ドメインを設定した場合は、そのドメインをtnsnames.oraのネット・サービス名MGW_AGENTに追加する必要があります。

ORA-28576: 外部プロシージャ・エージェントへのRPC接続が失われました。

メッセージ・ゲートウェイ・エージェントのプロセスが強制終了しました。外部エンティティによってプロセスが終了したか、または内部エラーによって障害が発生した可能性があります。エージェントは自動的に再起動されます。メッセージ・ゲートウェイのログ・ファイルを確認し、詳細情報がないかを調べてください。問題が解決しない場合は、Oracleサポート・サービスに連絡してください。

ORA-32830: 結果コード-2がMessaging Gatewayエージェントによって戻されました。

メッセージ・ゲートウェイ・エージェントが初期化ファイル(通常、mgw.ora)の読込みを試行した場合、エラーが発生します。ファイルが読込み可能であることを確認します。

ORA-32830: 結果コード-3がMessaging Gatewayエージェントによって戻されました。

メッセージ・ゲートウェイのログ・ファイル作成時にエラーが発生しました。ログ・ディレクトリが書込み可能であることを確認してください。デフォルトの位置は、ORACLE_HOME/mgw/logです。

ORA-32830: 結果コード-8がMessaging Gatewayエージェントによって戻されました。

Java Virtual Machine(JVM)起動時に、エラーが発生しました。次のことを確認してください。

  • 正しいJavaバージョンを使用していること

  • オペレーティング・システムのバージョンおよびパッチ・レベルがJDKのバージョンに適合していること

  • JVMヒープ・サイズに適切な値が設定されていること

    ヒープ・サイズがDBMS_MGWADM.ALTER_AGENTmax_memoryパラメータで指定されていること

  • Windowsプラットフォームの場合は、mgw.oraに設定されているMGW_PRE_PATHに適切なJVMライブラリ(jvm.dll)へのパスが含まれていること

ORA-32830: 結果コード-12がMessaging Gatewayエージェントによって戻されました。

メッセージ・ゲートウェイのログ・ファイル作成時にエラーが発生しました。ファイルのI/O問題を発生させる可能性のある、ディスクの空き領域またはその他の問題がないかどうか確認します。

ORA-32830: 結果コード-17がMessaging Gatewayエージェントによって戻されました。

JVMは正常に作成されましたが、メッセージ・ゲートウェイJavaエージェント・プログラムのコール試行中にエラーが発生しました。mgw.oraで設定されているCLASSPATHが適切であることを確認します。

ORA-32830: 結果コード-19がMessaging Gatewayエージェントによって戻されました。

メッセージ・ゲートウェイ・エージェントは特定の初期化ファイルを使用するように構成されていますが、そのファイルは存在しません。管理者によって指定されているファイルのフルパス名は、MGW_GATEWAYビューのINITFILEフィールドに表示されます。その初期化ファイルを作成するか、DBMS_MGWADM.ALTER_AGENTを使用して、INITFILEを他のファイルに設定するか、またはデフォルトの初期化ファイルを使用するようにNULLを設定します。

ORA-32830: 結果コード-100がMessaging Gatewayエージェントによって戻されました。

メッセージ・ゲートウェイ・エージェントJVMで、ログ・ファイルに書き込む前に、起動時にランタイム例外またはエラーが発生しました。

ORA-32830: 結果コード-101がMessaging Gatewayエージェントによって戻されました。

回復不能なエラーにより、メッセージ・ゲートウェイ・エージェントが停止されました。メッセージ・ゲートウェイのログ・ファイルで詳細を確認してください。mgw.oraで指定されている値が適切であることを確認します。値が不適切な場合、メッセージ・ゲートウェイ・エージェントは異常なエラー状態のため終了することがあります。

ORA-32830: 結果コード-102がMessaging Gatewayエージェントによって戻されました。

ファイルORACLE_HOME/mgw/jlib/mgw.jarのバージョンとメッセージ・ゲートウェイのPL/SQLパッケージのバージョンが一致しないため、メッセージ・ゲートウェイ・エージェントが停止されました。すべてのメッセージ・ゲートウェイのコンポーネントのリリース番号が同じであることを確認してください。

ORA-32830: 結果コード-103がMessaging Gatewayエージェントによって戻されました。

メッセージ・ゲートウェイ・エージェントを実行中のデータベース・インスタンスが停止されたため、エージェントが停止されました。エージェントは、別のインスタンス上(そのように設定した場合)、または停止したインスタンスを再起動したとき、自動的に再起動されます。

ORA-32830: 結果コード-104がMessaging Gatewayエージェントによって戻されました。

前のエラーを参照してください。

ORA-32830: 結果コード-105がMessaging Gatewayエージェントによって戻されました。

メッセージ・ゲートウェイ・エージェントが、実行不可のときに実行中であることが検出されました。これは起りえないことです。このようなことが発生すると、AGENT_STATUSBROKENとなりエージェントは自動的に停止します。このエラーが発生する場合は、次のようにします。

  • 実行中のメッセージ・ゲートウェイ・エージェントのプロセスをすべて終了します。プロセス名は、通常extprocmgwextprocです。

  • DBMS_MGWADM.CLEANUP_GATEWAY(DBMS_MGWADM.CLEAN_STARTUP_STATE)を実行します。

  • DBMS_MGWADM.STARTUPを使用してメッセージ・ゲートウェイ・エージェントを起動します。

ORA-32830: 結果コード-106がMessaging Gatewayエージェントによって戻されました。

前のエラーを参照してください。

その他のOracle Messaging Gatewayのエラー状態

この項では、長時間にわたりMGW_GATEWAYビューにSTART_SCHEDULEDで残留しているAGENT_STATUSの原因を説明します。

データベース・サービスが起動していない

メッセージ・ゲートウェイでは、Oracle Schedulerジョブを使用して、メッセージ・ゲートウェイ・エージェントを起動します。Oracle Schedulerを使用して、どのジョブでデータベース・サービスを実行するか(サービス・アフィニティ)を指定できます。管理者はメッセージ・ゲートウェイで、メッセージ・ゲートウェイ・エージェントを、そのエージェントに関連付けられているSchedulerジョブ・クラスを構成するときに使用されるデータベース・サービスで構成できます。

データベースを停止すると、そのデータベースへのサービスがすべて停止されます。データベースの起動時、それらのサービスを手動で再起動する必要がある場合があります。Schedulerジョブがサービスに関連付けられている場合、そのサービスが開始されるまでジョブは実行されません。メッセージ・ゲートウェイ・エージェントのAGENT_STATUSが、長時間にわたりSTART_SCHEDULEDのままである場合、データベース・サービスが無効化されているか、またはそのサービスに関連付けられているデータベース・インスタンスがいずれも実行中でない可能性があります。MGW_GATEWAYビュー、Oracle Schedulerビューおよびサービス・ビューを使用して、エージェントの構成方法、Schedulerジョブとデータベース・サービスの現在の状態を判断できます。

ノート:

Messaging Gatewayで使用されるOracle Schedulerオブジェクトの詳細は、「Oracle Messaging Gatewayのエージェントのスケジューラのジョブ」を参照してください。

不足しているジョブ・キュー・プロセス

メッセージ・ゲートウェイでは、Oracle Schedulerを使用して、メッセージ・ゲートウェイの外部プロセスを起動します。AGENT_STATUSSTART_SCHEDULEDの場合、メッセージ・ゲートウェイ・エージェントのSchedulerジョブはスケジューラによって実行されるのを待機します。メッセージ・ゲートウェイ・ジョブは、使用可能なジョブ・プロセスが現れるまで実行されません。メッセージ・ゲートウェイでは、Schedulerジョブ・プロセスはメッセージ・ゲートウェイ・エージェント・セッションの存続期間中、保持されます。複数のメッセージ・ゲートウェイ・エージェントが起動された場合、エージェントはそれぞれ独自のSchedulerジョブを使用し、独自のジョブ・プロセスを必要とします。

JOB_QUEUE_PROCESSESデータベース初期化パラメータの値がゼロの場合、Oracle Schedulerジョブは実行されません。値がゼロ以外の場合、事実上、この値は同時に実行できるSchedulerジョブおよびジョブ・キューのジョブの最大数です。

メッセージ・ゲートウェイのステータスが長時間START_SCHEDULEDのままである場合、JOB_QUEUE_PROCESSESがゼロまたは低すぎる値ですべてのジョブ・スレーブがビジーの状態でデータベースが起動された可能性があります。値にゼロ以外が設定され、十分な数のジョブ・キュー・プロセスがあり、各メッセージ・ゲートウェイ・エージェントでプロセスが1つずつ使用可能な状態でデータベース・インスタンスが起動されていることを確認してください。

破損または無効化されたSchedulerジョブ

メッセージ・ゲートウェイ・エージェントに関連付けられたOracle Schedulerジョブがなんらかの理由により無効化または破損した場合、メッセージ・ゲートウェイ・エージェントのステータスはSTART_SCHEDULEDのままになります。そのような場合であるかを判定するには、DBA_SCHEDULER_JOBSビューを使用して、エージェントのSchedulerジョブのSTATEフィールドを確認します。通常、Schedulerジョブのステータスは、メッセージ・ゲートウェイ・エージェントのSchedulerジョブが実行されるのを待機している場合、SCHEDULEDまたはメッセージ・ゲートウェイ・エージェントが実行中の場合、RUNNINGです。メッセージ・ゲートウェイ・エージェントのステータスがNOT_STARTEDの場合、エージェントのSchedulerジョブは存在しません。

DBA_SCHEDULER_JOB_RUN_DETAILSなどのその他のSchedulerビューで、メッセージ・ゲートウェイのSchedulerジョブの追加情報を確認してください。また、問題を示すエラー・メッセージがないかどうか、MGW_GATEWAYビューおよびメッセージ・ゲートウェイのログ・ファイルも確認してください。

ノート:

Messaging Gatewayで使用されるOracle Schedulerオブジェクトの詳細は、「Oracle Messaging Gatewayのエージェントのスケジューラのジョブ」を参照してください。

Oracle Real Application Clusters(Oracle RAC)環境

メッセージ・ゲートウェイをOracle RAC環境で使用し、データベース・サービスでエージェントが構成されているが、サービスが使用可能なデータベース・インスタンスが実行されていない場合、実行中のデータベース・インスタンス上でサービスが起動されるまで、メッセージ・ゲートウェイAGENT_STATUSSTART_SCHEDULEDのままです。

Oracle Messaging Gatewayの伝播の監視

メッセージ・ゲートウェイ伝播は、MGW_JOBSビューおよびメッセージ・ゲートウェイのログ・ファイルを使用して監視できます。ビューでは、伝播済メッセージに関する情報および伝播試行中に発生したエラーに関する情報が提供されます。ログ・ファイルを使用して、エラーの原因を判定できます。

MGW_JOBSビューには、構成情報の表示の他に、メッセージ伝播の監視に使用できる動的情報も表示されます。適用可能フィールドは、STATUSENABLEDPROPAGATED_MSGSEXCEPTIONQ_MSGSFAILURESLAST_ERROR_MSGLAST_ERROR_DATEおよびLAST_ERROR_TIMEです。

STATUSフィールドには、ジョブの現在のステータスが表示されます。READYは、伝播のジョブが準備完了であることを表します(ただし、ENABLEDフィールドがTRUEの場合のみ)。RETRYは、伝播障害が発生したが、伝播が再試行されることを表します。FAILEDは、リカバリ不可能なエラーが発生または伝播障害に達したため、エージェントがジョブの伝播を停止したことを表します。DELETE_PENDINGは、DBMS_MGWADM.REMOVE_JOBがコールされたが、このジョブに関連する特定のクリーン・アップ・タスクが未完了で、ジョブの削除が保留中であることを表します。SUBSCRIBER_DELETE_PENDINGは、DBMS_MGWADM.REMOVE_SUBSCRIBERが古い形式のジョブでコールされたが、このジョブに関連する特定のクリーン・アップ・タスクが未完了で、ジョブの削除が保留中であることを表します。

ENABLEDフィールドには、伝播ジョブが現在有効化されているかどうかが表示されます。TRUEは、ジョブが有効であることを、FALSEはジョブが無効であることを表します。ジョブが有効化されていなければ、いずれの伝播も発生しません。

MGW_JOBSビューのPROPAGATED_MSGSフィールドには、正常に伝播されたメッセージの数が表示されます。メッセージ・ゲートウェイ・エージェントが起動すると、このフィールドはゼロにリセットされます。

メッセージ・ゲートウェイのジョブに例外キューが構成されている場合、メッセージ変換障害のためメッセージ・ゲートウェイ・エージェントで最初の伝播障害が発生した時点で、メッセージ・ゲートウェイ・エージェントによってメッセージがその例外キューに移されます。メッセージ変換障害は、メッセージ・ゲートウェイのログ・ファイルでoracle.mgw.common.MessageExceptionによって示されます。EXCEPTIONQ_MSGSフィールドには、例外キューに移されたメッセージの数が表示されます。メッセージ・ゲートウェイ・エージェントが起動すると、このフィールドはゼロにリセットされます。

伝播ジョブに対してメッセージ伝播中にエラーが発生すると、FAILURESフィールドの値が増分されます。このフィールドは、最後にメッセージが正常に伝播されてからの障害回数を示します。障害が発生するたびに、LAST_ERROR_MSGLAST_ERROR_DATEおよびLAST_ERROR_TIMEによって、エラー・メッセージとその発生時刻が表示されます。障害の発生回数が16件になると、メッセージ・ゲートウェイはこの伝播ジョブに対する伝播試行を停止します。伝播試行を再開するには、伝播ジョブに対してDBMS_MGWADM.RESET_JOBをコールする必要があります。

エラーが発生した場合、詳細はメッセージ・ゲートウェイのログ・ファイルを調べてください。

Oracle Messaging Gatewayのエージェントのエラー・メッセージ

この項では、MGW_JOBSビューのLAST_ERROR_MSG列に表示され、メッセージ・ゲートウェイ・エージェントのログ・ファイルに記録される、特に頻繁に発生する一部のエラーを示します。また、特別なアクションを必要とするエラーも示されています。エラーの発生に気付いたら、ログ・ファイルでリンクされている例外を参照して、問題の原因を判断します。

次の2つの主なエラー・タイプが、メッセージ・ゲートウェイ・エージェントのログ・ファイルに記録されています。

  • oracle.mgw.common.MessageException

    このエラー・タイプは、メッセージ変換障害が発生すると記録されます。メッセージ・ゲートウェイ・エージェントでは、障害の原因となったメッセージを伝播できない可能性があり、この伝播ジョブは最終的に停止されます。

  • oracle.mgw.common.GatewayException

    このエラー・タイプは、メッセージ変換以外の障害が発生すると記録されます。原因によっては、問題が自動的に修復されたり、またはユーザー・アクションが必要になる場合があります。

[221] <messaging_system>キューへのアクセスに失敗しました: <queue>

Oracle Database Advanced QueuingキューまたはOracle以外のキューにアクセスしたとき、エラーが発生しました。ログ・ファイルにあるリンクされた例外エラー・コードとメッセージを調べてください。

[241] データベースへの接続に失敗しましたSQLエラー: <error>、接続文字列: <connect_string>

これは、DBMS_MGWADM.CREATE_AGENTまたはDBMS_MGWADM.ALTER_AGENTで指定されたMGW接続情報が不適切であった可能性があります。メッセージ・ゲートウェイ・エージェントのユーザーまたはパスワードが不適切か、またはデータベース指定子(データベース・パラメータ)のいずれかが不適切です。エージェント、JDBC OCIまたはJDBC Thinによって使用される接続タイプに関して、接続情報が適切であることを確認します。

databaseパラメータがNULLの場合は、メッセージ・ゲートウェイのログ・ファイルで次のOracleリンク・エラーを調べてください。

ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

これらの2つのエラーはどちらも、メッセージ・ゲートウェイ・エージェントがローカルIPC接続を使用してデータベースへの接続を試みましたが、ORACLE_SID値が不適切であることを示しています。

データベース・パラメータがNULLに設定されている場合、ローカル接続が使用されます。ローカルで接続する必要がある場合、メッセージ・ゲートウェイ・エージェントのプロセスに正しいORACLE_SID値を設定する必要があります。この値を設定するには、MGW初期化ファイル(通常、mgw.ora)に次の行を追加します。

set ORACLE_SID = sid_value

データベースがNULLでない場合、MGW初期化ファイルでORACLE_SIDを設定する必要はありません。

MGW初期化ファイルでORACLE_SIDを設定しても機能しない場合は、データベース・パラメータをNULL以外の値に設定する必要があります。

JDBC Thin接続が使用されている場合は、データベース・パラメータをNULL以外の値に設定する必要があります。JDBC Thin接続が使用されていて、データベース・パラメータがTNSNamesの別名である場合、oracle.net.tns_names JavaプロパティがMGW初期化ファイルで設定されていることを確認します。このプロパティを設定するには、MGW初期化ファイルに次の行を追加します。

setJavaProp oracle.net.tns_admin=<directory containing tnsnames.ora>

ノート:

詳細は、「oracle.net.tns_admin」を参照してください。

[415] ジョブ<job_name>のソース・キューからのメッセージの欠落

次の原因が考えられます。

  • エージェントがメッセージ・ゲートウェイ・エージェント以外によってデキューされた永続メッセージの一部を処理しました。

  • 伝播ソース・キューがパージまたは再作成されました。

  • メッセージがOracle Database Advanced Queuingの例外キューに移されました。

このエラーが発生した場合は、次のように、DBMS_MGWADMパッケージのプロシージャCLEANUP_GATEWAYをコールしてください。

DBMS_MGWADM.CLEANUP_GATEWAY (
       action => DBMS_MGWADM.RESET_SUB_MISSING_MESSAGE, 
       sarg => <job_name>);

このコールは、伝播ジョブでメッセージが欠落する問題が発生した場合で、エージェントが実行中の場合のみ有効になります。エージェントは、欠落メッセージを非永続メッセージとみなし、伝播ジョブ処理を続行します。

関連項目:

メッセージ・ゲートウェイ例外キューの詳細は、「伝播ジョブの概要」を参照してください。

[416] ジョブ<job_name>の受信ログ・キューのログ・レコードの欠落

次の原因が考えられます。

  • ログ記録が、メッセージ・ゲートウェイ・エージェント以外によってログ・キューからデキューされました。

  • ログ・キューがパージまたは再作成されました。

このエラーが発生した場合は、次のように、DBMS_MGWADMパッケージのプロシージャCLEANUP_GATEWAYをコールしてください。

DBMS_MGWADM.CLEANUP_GATEWAY (
       action => DBMS_MGWADM.RESET_SUB_MISSING_LOG_REC,  
       sarg => <job_name>);

このコールは、伝播ジョブでログ記録が欠落する問題が発生した場合で、エージェントが実行中の場合のみ有効になります。

ノート:

欠落メッセージが宛先キューに伝播済の場合、プロシージャDBMS_MGWADM.CLEANUP_GATEWAYをコールするとメッセージが重複する可能性があります。ソースおよび宛先キューの両方にあるメッセージをチェックする必要があります。このようなメッセージがある場合は、ソースまたは宛先キューのいずれかからメッセージを削除してから、このプロシージャをコールする必要があります。

[417] ジョブ<job_name>の送信ログ・キューのログ・レコードの欠落

前のエラーを参照してください。

[421] 警告: ジョブ<job_name>のリカバリのための接続を取得できません

これは、他の伝播ジョブによって接続がすべて使用中であるため、メッセージ・ゲートウェイ・エージェントが伝播ジョブを回復するための接続を取得できなかったことを示す警告メッセージです。エージェントは接続を取得できるまで試行します。

WebSphere MQのリンクに対してこのメッセージが何回も繰り返される場合は、伝播ジョブに関連付けられたメッセージ・ゲートウェイのリンクが使用する最大接続数を増やしてください。

[434] キュー<queue>、プロバイダ・キュー<queue>へのアクセスに失敗しました

このメッセージは、メッセージ・システムの固有キューにアクセスできないことを示します。キューがDBMS_MGWADM.REGISTER_FOREIGN_QUEUEによって登録されている、またはOracle Database Advanced Queuingキューである可能性があります。詳細は、リンクされた例外を参照してください。

次の原因が考えられます。

  • 外部キーの登録が正しくない、またはメッセージ・ゲートウェイのリンク設定が正しくありません。

    構成情報を確認してください。可能な場合は、同じ構成情報を使用してOracle以外のメッセージ・システムのサンプル・アプリケーションを実行してください。

  • Oracle以外のメッセージ・システムにアクセスできません。

    Oracle以外のメッセージ・システムが実行中で、メッセージ・ゲートウェイのリンクで提供されている情報を使用してアクセス可能であることを確認してください。

  • Oracle Database Advanced Queuingキューが存在しません。メッセージ・ゲートウェイの伝播ジョブの作成後、キューが削除された可能性があります。

    Oracle Database Advanced Queuingキューが存在することを確認してください。

[436] LOW MEMORY WARNING: 合計メモリー = < >、free_mem = < >

メッセージ・ゲートウェイ・エージェントJVMの実行用メモリーが不足しています。Javaガベージ・コレクションが起動されますが、JVMヒープ・サイズが小さすぎると表示される可能性があります。DBMS_MGWADM.ALTER_AGENTmax_memoryパラメータを使用して、JVMヒープ・サイズを増やしてください。メッセージ・ゲートウェイ・エージェントを実行中の場合は、再起動して変更を有効にする必要があります。

[703] 変換<transformation_id>の情報の取得に失敗しました

メッセージ・ゲートウェイ・エージェントが、変換に関する必要な情報をすべて取得できませんでした。DBMS_MGWADM.CREATE_JOBの変換パラメータでは、変換ファンクションではなく登録済の変換の名前を指定する必要があります。

次の原因が考えられます。

  • 変換が存在しません。変換が作成済であることを確認します。これは、ユーザーSYSとして実行される次の問合せで確認できます。

    SELECT TRANSFORMATION_ID, OWNER FROM DBA_TRANSFORMATIONS;
    
  • メッセージ・ゲートウェイに登録された変換が間違っています。登録済の変換が間違っていないことを確認します。

  • メッセージ・ゲートウェイ・エージェント・ユーザーに、例外で示された変換のfrom_typeまたはto_typeに使用されるオブジェクト型に対するEXECUTE権限がありません。

    MGW_AGENT_ROLEEXECUTE権限を付与し、その後エージェントのユーザーにMGW_AGENT_ROLEを付与するだけでは不十分です。オブジェクト型に対するEXECUTE権限をエージェントのユーザーに直接付与するか、またはPUBLICに付与する必要があります。

    次の例は、from_typeでのそのような場合を示しています。また、エラーの厳密な原因を判断するために使用されているリンクされた例外も示されています。

    オブジェクト型に対するEXECUTE権限がない場合

    Errors occurred during processing of job JOB_AQ2MQ_2
    oracle.mgw.common.GatewayException: [703] Failed to retrieve information for
    transformation mgwuser.SAMPLEADT_TO_MGW_BASIC_MSG
    […Java stack trace here…]
    [Linked-exception]
    java.sql.SQLException: "from_type" is null
    […Java stack trace here…]

[720] AQペイロード型<type>はサポートされていません。キュー: <queue>

メッセージ・ゲートウェイの伝播ジョブによって使用されるOracle Database Advanced Queuingキューのペイロード型がメッセージ・ゲートウェイによって直接サポートされていません。JMS以外の伝播の場合、メッセージ・ゲートウェイではペイロード型のRAWSYS.MGW_BASIC_MSG_TおよびSYS.MGW_TIBRV_MSG_Tを直接サポートしています。

次の処理が考えられます。

  • メッセージ・ゲートウェイの伝播ジョブをキュー・ペイロード型からサポートされている型へ変換するように構成します。

  • メッセージ・ゲートウェイの伝播ジョブを削除し、サポートされているペイロード型のOracle Database Advanced Queuingキューを使用する新規ジョブを作成します。

    Java Message Service (JMS)伝播の場合は、メッセージ・ゲートウェイの伝播ジョブを削除し、Oracle Java Message Service (Oracle JMS)によってそのOracle Database Advanced Queuingペイロード型がサポートされている新規ジョブを作成する必要があります。JMS伝播に対する変換はサポートされていません。

[721] 変換タイプ<type>はサポートされていません。キュー: <queue_name>、変換: <transformation>

メッセージ・ゲートウェイの伝播ジョブが、標準型の1つではないオブジェクト型を使用する変換によって構成されています。

発信ジョブの場合、変換from_typeはOracle Database Advanced Queuingペイロード型、変換to_typeはメッセージ・ゲートウェイ標準型である必要があります。着信ジョブの場合、変換from_typeはメッセージ・ゲートウェイ標準型、変換to_typeはOracle Database Advanced Queuingペイロード型である必要があります。

[722] メッセージの変換に失敗しました。キュー: <queue_name>、変換: <transformation>

変換実行中にエラーが発生しました。通常、ORA-25229は、変換ファンクションによってPL/SQL例外が発生したとき、または変換を使用しようとしたときにその他のOracleエラーが発生した場合に、Oracle Database Advanced Queuingによって表示されます。

次の原因が考えられます。

  • メッセージ・ゲートウェイ・エージェントのユーザーに変換ファンクションに対するEXECUTE権限がありません。これは、次の例に示されています。

    MGW_AGENT_ROLEEXECUTE権限を付与し、その後メッセージ・ゲートウェイ・エージェントのユーザーにMGW_AGENT_ROLEを付与するだけでは不十分です。変換ファンクションに対するEXECUTE権限を、メッセージ・ゲートウェイ・エージェントのユーザーに直接付与するか、またはPUBLICに付与する必要があります。

    変換ファンクションに対するEXECUTE権限がない場合

    Errors occurred during processing of job JOB_MQ2AQ_2
    oracle.mgw.common.GatewayException: [722] Message transformation failed queue:
    MGWUSER.DESTQ_SIMPLEADT, transform: MGWUSER.MGW_BASIC_MSG_TO_SIMPLEADT
    […Java stack trace here…]
    [Linked-exception]
    oracle.mgw.common.MessageException: [722] Message transformation failed;
    queue: MGWUSER.DESTQ_SIMPLEADT, transform: 
    MGWUSER.MGW_BASIC_MSG_TO_SIMPLEADT
    […Java stack trace here…]
    [Linked-exception]
    java.sql.SQLException: ORA-25229: error on transformation of message msgid:
    9749DB80C85B0BD4E03408002086745E
    ORA-00604: error occurred at recursive SQL level 1
    ORA-00904: invalid column name
    […Java stack trace here…]
    
  • 登録済の変換が存在しても、変換ファンクションが存在しません。変換ファンクションが存在しない場合は、再作成する必要があります。

  • メッセージ・ゲートウェイ・エージェントのユーザーには、例外で示されたキューのペイロード・オブジェクト型に対するEXECUTE権限がありません。

    MGW_AGENT_ROLEEXECUTE権限を付与し、その後メッセージ・ゲートウェイ・エージェントのユーザーにMGW_AGENT_ROLEを付与するだけでは不十分です。オブジェクト型に対するEXECUTE権限を、メッセージ・ゲートウェイ・エージェントのユーザーに直接付与するか、またはPUBLICに付与する必要があります。

  • 変換ファンクションでエラーが発生しました。変換ファンクションが受信するすべてのメッセージを処理できること確認してください。

[724] メッセージの変換がサポートされていません。宛先AQペイロード型: <type>、送信元タイプ: <type>

メッセージ・ゲートウェイの伝播ジョブは、Oracle以外のメッセージ・システム・リンクによって生成される標準メッセージ型がOracle Database Advanced Queuingキュー・ペイロード型と互換性がない着信伝播用に構成されています。SYS.MGW_BASIC_MSG_Tペイロード型によるTIB/Rendezvousメッセージ・システムからOracle Database Advanced Queuingキューへの伝播、またはWebSphere MQからSYS.MGW_TIBRV_MSG_Tペイロード型を使用したOracle Database Advanced Queuingへの伝播です。

次の処理が考えられます。

  • Oracle以外のメッセージ・リンクによって生成される標準メッセージ型をOracle Database Advanced Queuingペイロード型にマップする変換によって、メッセージ・ゲートウェイの伝播ジョブを構成します。

  • メッセージ・ゲートウェイの伝播ジョブを削除し、Oracle Database Advanced Queuingキュー・ペイロード型が、Oracle以外のリンクによって生成される標準メッセージ型と一致する新規ジョブを作成します。

[725] テキスト・メッセージがRAWペイロードをサポートしていません。

メッセージ・ゲートウェイの伝播ジョブが、RAWペイロード型のOracle Database Advanced Queuing宛先への着信伝播に対して構成されています。Oracle以外のソース・キューから受信したテキスト・メッセージのメッセージ変換に失敗しました。

テキスト・データに対するサポートが必要な場合は、メッセージ・ゲートウェイの伝播ジョブを削除し、ペイロード型がテキスト・データをサポートしているOracle Database Advanced Queuing宛先に対する新規ジョブを作成します。

[726] メッセージ・サイズ<size>はRAWペイロードには大きすぎます。最大サイズは<size>です

メッセージ・ゲートウェイの伝播ジョブが、RAWペイロード型のOracle Database Advanced Queuing宛先への着信伝播に対して構成されています。Oracle以外のソース・キューからの大きなRAW値を含むメッセージを受信時に、メッセージ変換障害が発生しました。

大容量データに対するサポートが必要な場合は、メッセージ・ゲートウェイの伝播ジョブを削除し、ペイロード型が大容量データ(通常、BLOB属性のオブジェクト型フォームのデータ)をサポートしているOracle Database Advanced Queuing宛先に対する新規ジョブを作成します。

[728] メッセージに含まれる(BLOB)フィールドが多すぎます。

BLOB型に格納される必要のあるフィールドが、ソース・メッセージに多すぎます。SYS.MGW_TIBRV_MSG_Tは、3つのBLOBフィールドに制限されています。小さなフィールドに分割するか、または少数の大きなフィールドに結合して、メッセージ内の大きなフィールドの数を減らします。

[729] メッセージに含まれる(CLOB)フィールドが多すぎます。

ソース・メッセージに、CLOBに格納される必要のある大きなテキスト値を含むフィールドが多すぎます。SYS.MGW_TIBRV_MSG_Tは、3つのCLOBフィールドに制限されています。小さなフィールドに分割するか、または少数の大きなフィールドに結合して、メッセージ内の大きなフィールドの数を減らします。

[805] キュー<queue>へのエンキュー中にMQSeries Messageエラーが発生しました

WebSphere MQキューにメッセージを格納したとき、WebSphere MQによってエラーが戻されました。ログ・ファイルにあるリンクされた例外エラー・コードとメッセージを調べてください。WebSphere MQのドキュメントを参照してください。

Oracle Messaging Gatewayのビュー

MGW_GATEWAY: 構成およびステータスに関する情報

このビューは、メッセージ・ゲートウェイの構成およびステータスに関する情報をリストします。

表C-13 MGW_GATEWAYビューのプロパティ

名前 説明

AGENT_DATABASE

VARCHAR2

メッセージ・ゲートウェイ・エージェントが使用するデータベース接続文字列。NULLは、ローカル接続を使用することを示します。

AGENT_INSTANCE

NUMBER

メッセージ・ゲートウェイ・エージェントが現在実行されているデータベース・インスタンス。エージェントが実行されていない場合、NULLです。

AGENT_JOB

NUMBER

[非推奨] メッセージ・ゲートウェイ・エージェントのプロセスの起動に使用するキューされたジョブのジョブ番号。ジョブ番号は、メッセージ・ゲートウェイの開始時に設定され、停止時にクリアされます。

AGENT_NAME

VARCHAR2

メッセージ・ゲートウェイ・エージェントの名前。

AGENT_PING

VARCHAR2

ゲートウェイ・エージェントのpingステータス。値:

  • NULL: pingは実行されていません。

  • REACHABLE: pingは正常に終了しました。

  • UBREACHABLE: pingは失敗しました。

AGENT_PINGは、メッセージ・ゲートウェイ・エージェントへの接続を試行します。pingが失敗した場合、多少の遅延(最大5秒)が発生します。AGENT_STATUSNOT_STARTEDまたはSTART_SCHEDULEDの場合、pingは実行されません。

AGENT_START_TIME

TIMESTAMP

現在実行されているメッセージ・ゲートウェイ・エージェントが起動された時間。エージェントが実行されていない場合、NULLです。

AGENT_STATUS

VARCHAR2

メッセージ・ゲートウェイ・エージェントのステータス。値:

  • NOT_STARTED: メッセージ・ゲートウェイ・エージェントは起動されていません。

  • START_SCHEDULED: メッセージ・ゲートウェイ・エージェントを起動するようにスケジュールされています。DBMS_MGWADM.STARTUPを使用してメッセージ・ゲートウェイが起動されましたが、メッセージ・ゲートウェイ・エージェントを起動するキューされたジョブが実行されていません。

  • STARTING: Messaging Gatewayエージェントを起動中です。DBMS_MGWADM.STARTUPを使用してメッセージ・ゲートウェイが起動されて、キューされたジョブが実行され、メッセージ・ゲートウェイ・エージェントが起動中です。

  • INITIALIZING: メッセージ・ゲートウェイ・エージェントが起動され、初期化中です。

  • RUNNING: メッセージ・ゲートウェイ・エージェントは実行中です。

  • SHUTTING_DOWN: メッセージ・ゲートウェイ・エージェントは停止中です。

  • BROKEN: 予期しない状態が発生し、メッセージ・ゲートウェイ・エージェントの起動が阻止されました。DBMS_MGWADM.CLEANUP_GATEWAYをコールして、エージェントを起動する必要があります。

AGENT_USER

VARCHAR2

メッセージ・ゲートウェイ・エージェントがデータベースへの接続に使用するデータベース・ユーザー名

COMMENTS

VARCHAR2

エージェントに関するコメント。

CONNTYPE

VARCHAR2

エージェントが使用する接続タイプ。

  • JDBC_OCI: JDBC OCIドライバを使用する場合

  • JDBC_THIN: JDBC thinドライバを使用する場合

INITFILE

VARCHAR2

エージェントが使用するメッセージ・ゲートウェイ初期化ファイルの名前。NULLは、デフォルトの初期化ファイルを使用することを示します。

LAST_ERROR_DATE

DATE

メッセージ・ゲートウェイ・エージェントの最終エラーの日付。メッセージ・ゲートウェイが開始されると最後のエラー情報がクリアされます。メッセージ・ゲートウェイ・エージェントが起動に失敗するか、異常な条件のために終了すると、設定されます。

LAST_ERROR_MSG

VARCHAR2

メッセージ・ゲートウェイ・エージェントの最終エラーに関するメッセージ。

LAST_ERROR_TIME

VARCHAR2

メッセージ・ゲートウェイ・エージェントの最終エラーの時間。

MAX_CONNECTIONS

NUMBER

[非推奨] Oracleデータベースへのメッセージ・コネクションの最大数。

MAX_MEMORY

NUMBER

メッセージ・ゲートウェイ・エージェントにより使用される最大ヒープ・サイズ(MB)。

MAX_THREADS

NUMBER

メッセージ・ゲートウェイ・エージェントにより作成されるメッセージ・スレッドの最大数。

SERVICE

VARCHAR2

エージェントにより使用されるOracle Schedulerジョブ・クラスに関連付けられたデータベース・サービスの名前。

MGW_AGENT_OPTIONS: サプリメンタル・オプションおよびプロパティ

このビューは、メッセージ・ゲートウェイ・エージェントのサプリメンタル・オプションおよびプロパティに関する情報をリストします。

表C-14 MGW_AGENT_OPTIONSビュー

説明

AGENT_NAME

VARCHAR2

メッセージ・ゲートウェイ・エージェントの名前。

ENCRYPTED

VARCHAR2

値を暗号化して格納するかどうかを示します。

  • TRUE: 値を暗号化して格納する場合

  • FALSE: 値をクリアテキストとして格納する場合

NAME

VARCHAR2

オプションの名前。

TYPE

VARCHAR2

オプションタイプまたは使用方法。オプションを使用してJavaシステム・プロパティを設定する場合、JAVA_SYSTEM_PROPです。

VALUE

VARCHAR2

オプションの値。値が暗号化されたフォームで格納される場合、<<ENCRYPTED>>です。

MGW_LINKS: メッセージ・システム・リンクの名前および型

このビューは、現在定義されているメッセージ・システム・リンクの名前および型をリストします。

表C-15 MGW_LINKSビューのプロパティ

名前 説明

AGENT_NAME

VARCHAR2

このリンクの伝播ジョブを処理するメッセージ・ゲートウェイ・エージェントの名前

LINK_COMMENT

VARCHAR2

リンクに関するユーザー・コメント

LINK_NAME

VARCHAR2

メッセージ・システム・リンクの名前

LINK_TYPE

VARCHAR2

メッセージ・システム・リンクのタイプ。値

  • MQSERIES: WebSphere MQリンクの場合

  • TIBRV: TIB/Rendezvousリンクの場合

MGW_MQSERIES_LINKS: WebSphere MQメッセージ・システム・リンク

このビューは、WebSphere MQメッセージ・システム・リンクに関する情報をリストします。このビューには、リンク作成時に指定された大部分のメッセージ・システムのプロパティが表示されます。

表C-16 MGW_MQSERIES_LINKSビューのプロパティ

名前 説明

AGENT_NAME

VARCHAR2

このリンクの伝播ジョブを処理するメッセージ・ゲートウェイ・エージェントの名前

CHANNEL

VARCHAR2

接続チャネル

HOSTNAME

VARCHAR2

WebSphere MQホストの名前

INBOUND_LOG_QUEUE

VARCHAR2

インバウンド伝播のログ・キュー

INTERFACE_TYPE

VARCHAR2

メッセージ・インタフェース・タイプ。値:

  • BASE_JAVA: WebSphere MQ Base Javaインタフェース

  • JMS_CONNECTION: WebSphere MQ JMSに統一されたドメインに依存しないコネクションの場合

  • JMS_QUEUE_CONNECTION: WebSphere MQ JMSキュー・コネクションの場合

  • JMS_TOPIC_CONNECTION: WebSphere MQ JMSトピック・コネクションの場合

LINK_COMMENT

VARCHAR2

リンクに関するユーザー・コメント

LINK_NAME

VARCHAR2

メッセージ・システム・リンクの名前

MAX_CONNECTIONS

NUMBER

メッセージ・コネクションの最大数

OPTIONS

SYS.MGW_PROPERTIES

リンク・オプション

OUTBOUND_LOG_QUEUE

VARCHAR2

発信伝播のログ・キュー

PORT

NUMBER

ポート番号

QUEUE_MANAGER

VARCHAR2

WebSphereキュー・マネージャの名前

MGW_TIBRV_LINKS: TIB/Rendezvousメッセージ・システム・リンク

このビューは、TIB/Rendezvousメッセージ・システム・リンクに関する情報をリストします。このビューには、リンク作成時に指定された大部分のメッセージ・システムのプロパティが表示されます。

表C-17 MGW_TIBRV_LINKSビューのプロパティ

プロパティ名 説明

AGENT_NAME

VARCHAR2

このリンクの伝播ジョブを処理するメッセージ・ゲートウェイ・エージェントの名前

CM_LEDGER

VARCHAR2

TIB/Rendezvous CM ledgerのファイル名

CM_NAME

VARCHAR2

TIB/Rendezvous CM ledgerのファイル名

DAEMON

VARCHAR2

RDVトランスポート用のTIB/Rendezvousデーモン・パラメータ

LINK_COMMENT

VARCHAR2

リンクに関するユーザー・コメント

LINK_NAME

VARCHAR2

メッセージ・システム・リンクの名前

NETWORK

VARCHAR2

RDVトランスポート用のTIB/Rendezvousネットワーク・パラメータ

OPTIONS

SYS.MGW_PROPERTIES

リンク・オプション

SERVICE

VARCHAR2

RDVトランスポート用のTIB/Rendezvousサービス・パラメータ

MGW_FOREIGN_QUEUES: 外部キュー

このビューは、外部キューに関する情報をリストします。このビューには、キュー登録時に指定された大部分のキューのプロパティが表示されます。

表C-18 MGW_FOREIGN_QUEUESビューのプロパティ

名前 説明

DOMAIN

VARCHAR2

キュー・ドメイン・タイプ。値:

  • NULL: メッセージ・システムに基づいてキュー・ドメイン・タイプを自動的に決定

  • QUEUE: キュー(Point-to-Point)モデルの場合

  • TOPIC: トピック(パブリッシュ・サブスクライブ)モデルの場合

LINK_NAME

VARCHAR2

メッセージ・システム・リンクの名前

NAME

VARCHAR2

登録キューの名前

OPTIONS

SYS.MGW_PROPERTIES

オプションのキュー・プロパティ

PROVIDER_QUEUE

VARCHAR2

メッセージ・プロバイダ(ネイティブ)のキュー名

QUEUE_COMMENT

VARCHAR2

外部キューに対するユーザー・コメント

MGW_JOBS: メッセージ・ゲートウェイ伝播ジョブ

このビューは、メッセージ・ゲートウェイ伝播ジョブに関する情報をリストします。このビューには、伝播ジョブの作成時に指定された大部分のジョブのプロパティが、その他のステータスおよび統計情報とともに表示されます。

表C-19 MGW_JOBSビュー

説明

AGENT_NAME

VARCHAR2

このジョブを処理するメッセージ・ゲートウェイ・エージェントの名前

COMMENTS

VARCHAR2

伝播ジョブに関するコメント

DESTINATION

VARCHAR2

メッセージの伝播先の宛先キュー

ENABLED

VARCHAR2

ジョブが有効化されているかどうかを示します。値は次のとおりです。

  • TRUE: ジョブが有効化されている場合

  • FALSE: ジョブが有効化されていない場合

EXCEPTION_QUEUE

VARCHAR2

伝播のロギングの目的で使用される例外キュー

EXCEPTIONQ_MSGS

NUMBER

オプションタイプまたは使用方法。オプションを使用してJavaシステム・プロパティを設定する場合、JAVA_SYSTEM_PROPです。

FAILURES

NUMBER

最後にエージェントが起動されてから例外キューに移動されたメッセージの数

JOB_NAME

VARCHAR2

伝播ジョブの名前

LAST_ERROR_MSG

VARCHAR2

伝播の最終エラーに関するメッセージ

LAST_ERROR_DATE

DATE

伝播の最終エラーの日付

LAST_ERROR_TIME

VARCHAR2

伝播の最終エラーの時間

LINK_NAME

VARCHAR2

このジョブで使用されるメッセージ・ゲートウェイ・リンクの名前

OPTIONS

SYS.MGW_PROPERTIES

ジョブ・オプション

POLL_INTERVAL

INTEGER

伝播のポーリング間隔(秒)

PROPAGATED_MSGS

NUMBER

最後にエージェントが起動されてから例外キューに伝播されたメッセージの数

PROP_STYLE

VARCHAR2

メッセージの伝播スタイル。値は次のとおりです。

  • NATIVE: ネイティブなメッセージ伝播の場合

  • JMS: JMSメッセージ伝播の場合

PROPAGATION_TYPE

VARCHAR2

伝播型。値は次のとおりです。

  • OUTBOUNDは、Oracle Database AQからOracle以外への伝播用です。

  • INBOUNDは、Oracle以外からOracle Database AQへの伝播用です。

RULE

VARCHAR2

伝播ソースで使用されるサブスクリプション・ルール

SOURCE

VARCHAR2

メッセージの伝播元のソース・キュー

STATUS

VARCHAR2

ジョブ・ステータス。値は次のとおりです。

  • READY: 伝播のジョブが準備完了であることを示します。実際にメッセージを伝播する前に、ジョブが有効化され、メッセージ・ゲートウェイ・エージェントが実行中である必要があります。

  • RETRY: ジョブへのメッセージの伝播中にエージェントでエラーが発生し、操作を再試行することを示します。

  • FAILED: ジョブが失敗し、エージェントがメッセージの伝播を停止したことを示します。通常、これはリカバリ不可能なエラーが発生または伝播障害制限に達したためです。エージェントでメッセージの伝播を実行する前に、ジョブをリセットする必要があります。ジョブはエージェントを起動すると自動的にリセットされ、DBMS_MGWADM.RESET_JOBを使用すると手動でリセットできます。

  • DELETE_PENDING: ジョブの削除が保留中であることを示します。これは、DBMS_MGWADM.REMOVE_JOBがコールされたが、このジョブに関連する特定のクリーン・アップ・タスクが未完了であることを表します。

  • SUBSCRIBER_DELETE_PENDING: ジョブに関連付けられたサブスクライバの削除が保留中であることを示します。これは、DBMS_MGWADM.REMOVE_SUBSCRIBERがコールされたが、特定のクリーン・アップ・タスクが未完了であることを表します。

TRANSFORMATION

VARCHAR2

メッセージ変換に使用される変換

MGW_SUBSCRIBERS: サブスクライバに関する情報

このビューは、メッセージ・ゲートウェイ・サブスクライバの構成およびステータスに関する情報をリストします。このビューには、サブスクライバの追加時に指定された大部分のサブスクライバのプロパティが、その他のステータスおよび統計情報とともに表示されます。

表C-20 MGW_SUBSCRIBERSビューのプロパティ

名前 説明

DESTINATION

VARCHAR2

メッセージの伝播先の宛先キュー

EXCEPTIONQ_MSGS

NUMBER

最後にエージェントが起動されてから伝播例外キューに移動されたメッセージの数

EXCEPTION_QUEUE

VARCHAR2

ロギングの目的で使用される例外キュー

FAILURES

NUMBER

伝播の失敗数

LAST_ERROR_DATE

DATE

伝播の最終エラーの日付

LAST_ERROR_MSG

VARCHAR2

伝播の最終エラーに関するメッセージ

LAST_ERROR_TIME

VARCHAR2

伝播の最終エラーの時間

OPTIONS

SYS.MGW_PROPERTIES

サブスクライバ・オプション

PROP_STYLE

VARCHAR2

メッセージの伝播スタイル。値:

  • NATIVE: ネイティブなメッセージ伝播の場合

  • JMS: JMSメッセージ伝播の場合

PROPAGATED_MSGS

NUMBER

最後にエージェントが起動されてから宛先キューに伝播されたメッセージの数

PROPAGATION_TYPE

VARCHAR2

伝播型。値:

  • OUTBOUNDは、Oracle Database AQからOracle以外への伝播用です。

  • INBOUNDは、Oracle以外からOracle Database AQへの伝播用です。

QUEUE_NAME

VARCHAR2

サブスクリプション・ソース・キュー

RULE

VARCHAR2

サブスクリプション・ルール

STATUS

VARCHAR2

サブスクライバ・ステータス。値:

  • ENABLED: サブスクライバが有効化されている場合。

  • DELETE_PENDING: 通常、DBMS_MGWADM.REMOVE_SUBSCRIBERがコールされたが、このサブスクライバに関連する特定のクリーン・アップ・タスクが未完了で、サブスクライバの削除が保留中であることを表します。

SUBSCRIBER_ID

VARCHAR2

伝播サブスクライバの識別子

TRANSFORMATION

VARCHAR2

メッセージ変換に使用される変換

MGW_SCHEDULES: スケジュールに関する情報

このビューは、メッセージ・ゲートウェイ・スケジュールの構成およびステータスに関する情報をリストします。このビューには、スケジュールの作成時に指定された大部分のスケジュールのプロパティが、その他のステータス情報とともに表示されます。

表C-21 MGW_SCHEDULESビューのプロパティ

名前 説明

DESTINATION

VARCHAR2

伝播の宛先

LATENCY

NUMBER

伝播枠の待機時間(秒)

NEXT_TIME

VARCHAR2

将来の使用のために予約済

PROPAGATION_TYPE

VARCHAR2

伝播型。値は次のとおりです。値:

  • OUTBOUNDは、Oracle Database AQからOracle以外への伝播用です。

  • INBOUNDは、Oracle以外からOracle Database AQへの伝播用です。

PROPAGATION_WINDOW

NUMBER

将来の使用のために予約済

SCHEDULE_DISABLED

VARCHAR2

スケジュールが使用不可かどうかを示します。Yは、スケジュールが使用不可であることを示します。Nは、スケジュールが使用可能であることを示します。

SCHEDULE_ID

VARCHAR2

伝播スケジュールの識別子

SOURCE

VARCHAR2

伝播ソース

START_DATE

DATE

将来の使用のために予約済

START_TIME

VARCHAR2

将来の使用のために予約済