この章では、Oracle Messaging Gateway(MGW)のエージェント、ユーザーが経験する異常状態、メッセージ・ゲートウェイのエラーと例外に関する複数ソースの情報および推奨される改善措置を説明します。
内容は次のとおりです。
メッセージ・ゲートウェイ・エージェントの状態、履歴およびエラーは、メッセージ・ゲートウェイのログ・ファイルに記録されます。メッセージ・ゲートウェイ・エージェントが起動されるたびに、異なるログ・ファイルが作成されます。あらゆるエラー、起動時に読み込まれた設定情報または動的設定情報はログ・ファイルに書き込まれているため、ログ・ファイルを監視する必要があります。
デフォルトのエージェントのログ・ファイル名のフォーマットは次のとおりです。
oramgw-hostname-timestamp-processid.log
指定エージェントのログ・ファイル名のフォーマットは次のとおりです。
oramgw-AGENTNAME-hostname-timestamp-processid.log
デフォルトで、メッセージ・ゲートウェイのログ・ファイルは、ORACLE_HOME/mgw/logにあります。この場所は、エージェントで使用されるメッセージ・ゲートウェイの初期化ファイル(通常、mgw.ora)内のlog_directoryパラメータで上書きできます。
この項の内容は次のとおりです。
次のサンプル・ログ・ファイルは、メッセージ・ゲートウェイ・エージェントの起動を示しています。サンプル・ログ・ファイルには、リンク、登録された外部キュー、サブスクライバおよびスケジュールが追加されたことが表示されます。また、伝播ジョブがアクティブ化されていることも示されています。最後の行は、メッセージ・ゲートウェイが起動され、実行中であり、メッセージを伝播する準備が完了していることを示しています。
例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.
メッセージ・ゲートウェイのログ・ファイルに記録された例外メッセージには、ログ・ファイル内で[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.
この項の内容は次のとおりです。
MGW_GATEWAYビューでは、メッセージ・ゲートウェイ・エージェントの進捗を監視します。エージェントの監視に使用できるフィールドは、次のとおりです。
AGENT_NAME
AGENT_INSTANCE
AGENT_PING
AGENT_STATUS
LAST_ERROR_MSG
SERVICE
AGENT_STATUSフィールドには、エージェントのステータスが表示されます。この列に有効な値は、次のとおりです。
エージェントが実行されず、実行されるスケジュールもないことを示します。
エージェント・ジョブがジョブ・スケジューラによって実行されるのを待機中であることを示します。
エージェントが起動プロセス中であることを示します。
エージェントが起動済で設定データを読込み中であることを示します。
エージェントで、使用可能メッセージの伝播または動的な設定変更のプロセスの準備が完了していることを示します。
エージェントが停止プロセス中であることを示します。
エージェントのプロセスの起動時に、メッセージ・ゲートウェイが他のエージェントが実行中であることを検出したことを示します。通常の使用状態でこのような状況が発生することはありません。
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に関する項を参照してください。 |
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に関する項 |
この項では、長時間にわたり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のままです。
メッセージ・ゲートウェイ伝播は、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に関する項 |
この項では、MGW_JOBSビューのLAST_ERROR_MSG列に表示され、メッセージ・ゲートウェイ・エージェントのログ・ファイルに記録される、特に頻繁に発生する一部のエラーを示します。また、特別なアクションを必要とするエラーも示されています。エラーの発生に気付いたら、ログ・ファイルでリンクされている例外を参照して、問題の原因を判断します。
次の2つの主なエラー・タイプが、メッセージ・ゲートウェイ・エージェントのログ・ファイルに記録されています。
oracle.mgw.common.MessageException
このエラー・タイプは、メッセージ変換障害が発生すると記録されます。メッセージ・ゲートウェイ・エージェントでは、障害の原因となったメッセージを伝播できない可能性があり、この伝播ジョブは最終的に停止されます。
oracle.mgw.common.GatewayException
このエラー・タイプは、メッセージ変換以外の障害が発生すると記録されます。原因によっては、問題が自動的に修復されたり、またはユーザー・アクションが必要になる場合があります。
[221] <messaging_system>キューへのアクセスに失敗しました: <queue>
Oracle Streams 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>
[415] ジョブ<job_name>のソース・キューからのメッセージの欠落
考えられる原因は次のとおりです。
エージェントがメッセージ・ゲートウェイ・エージェント以外によってデキューされた永続メッセージの一部を処理しました。
伝播ソース・キューがパージまたは再作成されました。
メッセージがOracle Streams 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 Streams Advanced Queuingキューである可能性があります。詳細は、リンクされた例外を参照してください。
考えられる原因は次のとおりです。
外部キーの登録が正しくない、またはメッセージ・ゲートウェイのリンク設定が正しくありません。
構成情報を確認してください。可能な場合は、同じ構成情報を使用してOracle以外のメッセージ・システムのサンプル・アプリケーションを実行してください。
Oracle以外のメッセージ・システムにアクセスできません。
Oracle以外のメッセージ・システムが実行中で、メッセージ・ゲートウェイのリンクで提供されている情報を使用してアクセス可能であることを確認してください。
Oracle Streams Advanced Queuingキューが存在しません。メッセージ・ゲートウェイの伝播ジョブの作成後、キューが削除された可能性があります。
Oracle Streams 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に付与する必要があります。
例21-3に、from_typeのこのような例を示します。また、エラーの厳密な原因を判断するために使用されているリンクされた例外も示されています。
例21-3 オブジェクト型に対する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 Streams Advanced Queuingキューのペイロード型がメッセージ・ゲートウェイによって直接サポートされていません。JMS以外の伝播の場合、メッセージ・ゲートウェイではペイロード型のRAW、SYS.MGW_BASIC_MSG_TおよびSYS.MGW_TIBRV_MSG_Tを直接サポートしています。
考えられるアクションは次のとおりです。
メッセージ・ゲートウェイの伝播ジョブをキュー・ペイロード型からサポートされている型へ変換するように構成します。
メッセージ・ゲートウェイの伝播ジョブを削除し、サポートされているペイロード型のOracle Streams Advanced Queuingキューを使用する新規ジョブを作成します。
Java Message Service(JMS)伝播の場合は、メッセージ・ゲートウェイの伝播ジョブを削除し、Oracle Java Message Service(OJMS)によってそのOracle Streams Advanced Queuingペイロード型がサポートされている新規ジョブを作成する必要があります。JMS伝播に対する変換はサポートされていません。
[721] 変換タイプ<type>はサポートされていません。キュー: <queue_name>、変換: <transformation>
メッセージ・ゲートウェイの伝播ジョブが、標準型の1つではないオブジェクト型を使用する変換によって構成されています。
発信ジョブの場合、変換from_typeはOracle Streams Advanced Queuingペイロード型、変換to_typeはメッセージ・ゲートウェイ標準型である必要があります。着信ジョブの場合、変換from_typeはメッセージ・ゲートウェイ標準型、変換to_typeはOracle Streams Advanced Queuingペイロード型である必要があります。
[722] メッセージの変換に失敗しました。キュー: <queue_name>、変換: <transformation>
変換実行中にエラーが発生しました。通常、ORA-25229は、変換ファンクションによってPL/SQL例外が発生したとき、または変換を使用しようとしたときにその他のOracleエラーが発生した場合に、Oracle Streams Advanced Queuingによって表示されます。
考えられる原因は次のとおりです。
メッセージ・ゲートウェイ・エージェントのユーザーに変換ファンクションに対するEXECUTE権限がありません。これを、例21-4に示します。
MGW_AGENT_ROLEにEXECUTE権限を付与し、その後メッセージ・ゲートウェイ・エージェントのユーザーにMGW_AGENT_ROLEを付与するだけでは不十分です。変換ファンクションに対するEXECUTE権限を、メッセージ・ゲートウェイ・エージェントのユーザーに直接付与するか、またはPUBLICに付与する必要があります。
例21-4 変換ファンクションに対する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 Streams Advanced Queuingキュー・ペイロード型と互換性がない着信伝播用に構成されています。SYS.MGW_BASIC_MSG_Tペイロード型によるTIB/Rendezvousメッセージ・システムからOracle Streams Advanced Queuingキューへの伝播、またはWebSphere MQからSYS.MGW_TIBRV_MSG_Tペイロード型を使用したOracle Streams Advanced Queuingへの伝播です。
考えられるアクションは次のとおりです。
Oracle以外のメッセージ・リンクによって生成される標準メッセージ型をOracle Streams Advanced Queuingペイロード型にマップする変換によって、メッセージ・ゲートウェイの伝播ジョブを構成します。
メッセージ・ゲートウェイの伝播ジョブを削除し、Oracle Streams Advanced Queuingキュー・ペイロード型が、Oracle以外のリンクによって生成される標準メッセージ型と一致する新規ジョブを作成します。
[725] テキスト・メッセージがRAWペイロードをサポートしていません。
メッセージ・ゲートウェイの伝播ジョブが、RAWペイロード型のOracle Streams Advanced Queuing宛先への着信伝播に対して構成されています。Oracle以外のソース・キューから受信したテキスト・メッセージのメッセージ変換に失敗しました。
テキスト・データに対するサポートが必要な場合は、メッセージ・ゲートウェイの伝播ジョブを削除し、ペイロード型がテキスト・データをサポートしているOracle Streams Advanced Queuing宛先に対する新規ジョブを作成します。
[726] メッセージ・サイズ<size>はRAWペイロードには大きすぎます。最大サイズは<size>です
メッセージ・ゲートウェイの伝播ジョブが、RAWペイロード型のOracle Streams Advanced Queuing宛先への着信伝播に対して構成されています。Oracle以外のソース・キューからの大きなRAW値を含むメッセージを受信時に、メッセージ変換障害が発生しました。
大容量データに対するサポートが必要な場合は、メッセージ・ゲートウェイの伝播ジョブを削除し、ペイロード型が大容量データ(通常、BLOB属性のオブジェクト型フォームのデータ)をサポートしているOracle Streams 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のドキュメントを参照してください。