7 Oracle Database Advanced Queuingのトラブルシューティング
次のトピックでは、Oracle Database Advanced Queuing (AQ)のトラブルシューティング方法を説明します。
Oracle Database Advanced Queuingの伝播に関する問題のデバッグ
次のヒントは、伝播に関する問題のデバッグに役立ちます。ここでは、ソースおよびターゲット・データベースにキュー表およびキューを作成し、接続先データベースに対するデータベース・リンクを定義していると想定します。
Oracle Database Advanced Queuingのエラー・メッセージ
Oracle Database Advanced Queuingのエラー・メッセージを次に示します。
ORA-1555
デキューにNEXT_MESSAGE
ナビゲーション・オプションを使用すると、このエラー・メッセージが表示される場合があります。NEXT_MESSAGE
では、最初のデキュー・コール中に作成されたスナップショットが使用されます。その後で、UNDO情報が削除される場合があります。
これを解決するには、FIRST_MESSAGE
オプションを使用してメッセージをデキューします。これによってカーソルが再実行され、新しいスナップショットが取得されます。FIRST_MESSAGE
はNEXT_MESSAGE
のように実行されないため、1つのメッセージにFIRST_MESSAGE
を使用し、次の1000のメッセージにNEXT_MESSAGE
を使用し、再びFIRST_MESSAGE
を使用するというように、メッセージをバッチでデキューすることをお薦めします。
ORA-24033
メッセージが受信者を指定しないでマルチ・コンシューマ・キューにエンキューされ、そのキューにサブスクライバが指定されていない(またはそのメッセージに一致するルールベースのサブスクライバが存在しない)場合、このエラーが発生します。これは、配信可能な受信者またはサブスクライバが存在しないために、そのメッセージが廃棄されることを示す警告です。
ORA-25237
サービス間(xa_start
境界とxa_end
境界の間など)でデキュー処理を続ける場合に、Oracle Database Advanced Queuingナビゲーション・オプションを使用するときは、FIRST_MESSAGE
を使用してデキュー位置をリセットする必要があります。これは、xa_end
が終了すると、XAがカーソル・フェッチ状態を取り消すためです。リセットしないと、ナビゲーション・オプションの指定順序が正しくないというエラー・メッセージが表示されます。
ORA-25307
メッセージ送信者に対してフロー制御が有効になっています。これは、送信者のメッセージのうち最も高速のサブスクライバがメッセージのエンキュー速度に追いつけないことを意味します。バッファ済メッセージング・アプリケーションは、このエラーを処理し、少し待ってからメッセージを再度エンキューする必要があります。