21 Oracle Messaging Gatewayの監視
次のトピックでは、Oracle Messaging Gateway (MGW)のエージェントの監視方法、ユーザーが経験する異常状態、メッセージ・ゲートウェイのエラーと例外に関する複数ソースの情報および推奨される改善措置を説明します。
21.1 Oracle Messaging Gatewayのログ・ファイル
メッセージ・ゲートウェイ・エージェントの状態、履歴およびエラーは、メッセージ・ゲートウェイのログ・ファイルに記録されます。メッセージ・ゲートウェイ・エージェントが起動されるたびに、異なるログ・ファイルが作成されます。あらゆるエラー、起動時に読み込まれた設定情報または動的設定情報はログ・ファイルに書き込まれているため、ログ・ファイルを監視する必要があります。
デフォルトのエージェントのログ・ファイル名のフォーマットは次のとおりです。
oramgw-hostname-timestamp-processid.log
指定エージェントのログ・ファイル名のフォーマットは次のとおりです。
oramgw-AGENTNAME-hostname-timestamp-processid.log
デフォルトで、メッセージ・ゲートウェイのログ・ファイルは、ORACLE_HOME
/mgw/log
にあります。この場所は、エージェントで使用されるメッセージ・ゲートウェイの初期化ファイル(通常、mgw.ora
)内のlog_directory
パラメータで上書きできます。
この項の内容は次のとおりです。
21.1.1 Oracle Messaging Gatewayのログ・ファイル・サンプル
次のサンプル・ログ・ファイルは、メッセージ・ゲートウェイ・エージェントの起動を示しています。サンプル・ログ・ファイルには、リンク、登録された外部キュー、サブスクライバおよびスケジュールが追加されたことが表示されます。また、伝播ジョブがアクティブ化されていることも示されています。最後の行は、メッセージ・ゲートウェイが起動され、実行中であり、メッセージを伝播する準備が完了していることを示しています。
例21-1 メッセージ・ゲートウェイのサンプル・ログ・ファイル
>>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.
21.1.2 Oracle Messaging Gatewayのログ・ファイルにおける例外メッセージの解釈
メッセージ・ゲートウェイのログ・ファイルに記録された例外メッセージには、ログ・ファイル内で[Linked-exception]
と特定された1つ以上のリンクされた例外が含まれる場合があります。これが問題の原因を特定するための最も便利な方法となります。たとえば、リンクされた例外には、Oracleエラー・メッセージ、PL/SQLスタック・トレースまたはその両方を含むjava.sql.SQLException
があります。
次の例は、無効な値(bad_service_name
)がDBMS_MGWADM
.CREATE_AGENT
またはDBMS_MGWADM
.ALTER_AGENT
のdatabase
パラメータに指定された場合の、メッセージ・ゲートウェイのログ・ファイルからのエントリを示したものです。この場合、メッセージ・ゲートウェイ・エージェントではデータベース接続を確立できません。
例21-2 例外メッセージ・サンプル
>>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.
21.2 Oracle Messaging Gatewayのエージェント・ステータスの監視
この項の内容は次のとおりです。
21.2.1 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_MSG
、LAST_ERROR_DATE
およびLAST_ERROR_TIME
の列には、メッセージ・ゲートウェイ・エージェントの起動時または実行時にエラーが発生した場合に有効な情報が表示されます。AGENT_INSTANCE
は、メッセージ・ゲートウェイのインスタンスが起動されたOracle Databaseのインスタンスを示します。
関連項目:
MGW_GATEWAY
ビューの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_MGWADMに関する項を参照してください。
21.2.2 Oracle Messaging Gatewayのリカバリ不能なエラー・メッセージ
MGW_GATEWAY
ビューのAGENT_STATUS
フィールドにあるNOT_STARTED
のステータスは、メッセージ・ゲートウェイ・エージェントが実行中でないことを示します。AGENT_STATUS
がNOT_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.ora
、listener.ora
またはその両方の値が正しくありません。特に、
tnsnames.ora
には、MGW_AGENT
というネット・サービス名エントリが必要です。このエントリは、Windowsのメッセージ・ゲートウェイには必要ありません。tnsnames.ora
のMGW_AGENT
ネット・サービス名のCONNECT_DATA
に指定されているSID値は、listener.ora
のSID_DESC
エントリのSID_NAME
値と一致している必要があります。MGW_AGENT
ネット・サービス名がプロセス間通信(IPC)接続用に設定されている場合、tnsnames.ora
とlistener.ora
のADDRESS
のKEY
値が一致している必要があります。sqlnet.ora
のnames.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_AGENT
のmax_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_STATUS
はBROKEN
となりエージェントは自動的に停止します。このエラーが発生する場合は、次のようにします。
-
実行中のメッセージ・ゲートウェイ・エージェントのプロセスをすべて終了します。プロセス名は、通常
extprocmgwextproc
です。 -
DBMS_MGWADM.CLEANUP_GATEWAY(DBMS_MGWADM.CLEAN_STARTUP_STATE)
を実行します。 -
DBMS_MGWADM.STARTUP
を使用してメッセージ・ゲートウェイ・エージェントを起動します。
ORA-32830: 結果コード-106がMessaging Gatewayエージェントによって戻されました。
前のエラーを参照してください。
関連項目:
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_MGWADMに関する項
21.2.3 その他の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_STATUS
がSTART_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_STATUS
はSTART_SCHEDULED
のままです。
21.3 Oracle Messaging Gatewayの伝播の監視
メッセージ・ゲートウェイ伝播は、MGW_JOBS
ビューおよびメッセージ・ゲートウェイのログ・ファイルを使用して監視できます。ビューでは、伝播済メッセージに関する情報および伝播試行中に発生したエラーに関する情報が提供されます。ログ・ファイルを使用して、エラーの原因を判定できます。
MGW_JOBS
ビューには、構成情報の表示の他に、メッセージ伝播の監視に使用できる動的情報も表示されます。適用可能フィールドは、STATUS
、ENABLED
、PROPAGATED_MSGS
、EXCEPTIONQ_MSGS
、FAILURES
、LAST_ERROR_MSG
、LAST_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_MSG
、LAST_ERROR_DATE
およびLAST_ERROR_TIME
によって、エラー・メッセージとその発生時刻が表示されます。障害の発生回数が16件になると、メッセージ・ゲートウェイはこの伝播ジョブに対する伝播試行を停止します。伝播試行を再開するには、伝播ジョブに対してDBMS_MGWADM
.RESET_JOB
をコールする必要があります。
エラーが発生した場合、詳細はメッセージ・ゲートウェイのログ・ファイルを調べてください。
関連項目:
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_MGWADMに関する項
21.4 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_AGENT
のmax_memory
パラメータを使用して、JVMヒープ・サイズを増やしてください。メッセージ・ゲートウェイ・エージェントを実行中の場合は、再起動して変更を有効にする必要があります。
[703] 変換<transformation_id>の情報の取得に失敗しました
メッセージ・ゲートウェイ・エージェントが、変換に関する必要な情報をすべて取得できませんでした。DBMS_MGWADM.CREATE_JOB
の変換パラメータでは、変換ファンクションではなく登録済の変換の名前を指定する必要があります。
考えられる原因は次のとおりです。
-
変換が存在しません。変換が作成済であることを確認します。これは、ユーザーSYSとして実行される次の問合せで確認できます。
SELECT TRANSFORMATION_ID, OWNER FROM DBA_TRANSFORMATIONS;
-
メッセージ・ゲートウェイに登録された変換が間違っています。登録済の変換が間違っていないことを確認します。
-
メッセージ・ゲートウェイ・エージェント・ユーザーに、例外で示された変換の
from_type
またはto_type
に使用されるオブジェクト型に対するEXECUTE
権限がありません。MGW_AGENT_ROLE
にEXECUTE
権限を付与し、その後エージェントのユーザーに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以外の伝播の場合、メッセージ・ゲートウェイではペイロード型のRAW
、SYS.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_ROLE
にEXECUTE
権限を付与し、その後メッセージ・ゲートウェイ・エージェントのユーザーに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_ROLE
にEXECUTE
権限を付与し、その後メッセージ・ゲートウェイ・エージェントのユーザーに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のドキュメントを参照してください。