Not Applying Operations That Have Already Been Applied (すでに適用された操作のため、適用されません)
概要:この文書では、このメッセージが表示される原因を説明します。また、すべてのバージョンの Adaptive Server Anywhere (SQL Anywhere) を対象としています。
エラー:”Not applying operations that have already been applied”
原因:受信中のメッセージ・ファイルのヘッダ内のオフセットが、サブスクライバのデータベースでこのリモート・ユーザに対応する log_received の値よりも小さい。
症状:SQL Remote がメッセージを適用しない。
対象:SQL Anywhere 5.5.0x、Adaptive Server Anywhere (SQL Anywhere) 6/7/8
解決法:まず、メッセージの原因を特定します。次の診断手順を参照してください。
このメッセージは通常、メッセージ・システムが正常に動作していて、同一メッセージの複数回の適用を防止していることを示します。このメッセージが発生の原因のうち、対処が必要な場合がある状況は、次のとおりです。
1) リモート・データベースの再抽出後にこのエラーが発生した場合
この問題は、リモート・サイトを再抽出したが、前のバージョンのデータベース宛ての古いメッセージをメッセージ・システムから削除できなかった場合に発生することがあります。この場合は、メッセージ・エージェントが古いメッセージを受信時に廃棄し、”Not applying operations that have already been applied” というメッセージを表示しているだけであるため、対処は必要ありません。
2) データベースのバックアップからリモート・ノードが正しくリカバリされていない場合
このような状況で、統合側でエラーがレポートされている場合は、リモート・ユーザがデータベースのバックアップから正しくリカバリしていない可能性があります。リモート・ユーザがデータベースの古いコピーを (トランザクション・ログの一部またはすべてを適用せずに) 運用した場合などに、データベースが正しくリカバリされません。この問題の症状例として、リモート・サイトでの log_sent の値と統合データベースでの log_received の値 (または リモート・サイトでの log_received の値と統合データベースでの log_sent の値) が大きく異なることがあります。この場合は、リモートがメッセージを送信したときに、メッセージ・ファイルのヘッダが示すログ・オフセットが統合側の予測する値 (SYS.sysremoteuser テーブルでリモート・ノードに対応する confirm_received の値) よりも低くなり、その結果このエラーが表示されます。この問題に気づかないと、警告が表示されなくなることがあるため、メッセージ・システムがリカバリしたように見えることがあります。警告が表示されなくなることがあるのは、時間が経過すると、メッセージ・ヘッダのログ・オフセットの値が統合サイトの予測するログ・オフセットに等しいメッセージをリモート・ノードが最終的に送信することがあるためです。このため、統合サイトが特定のリモート・ノードからのメッセージを再適用しようとすることがあります。このようなメッセージは、適用に成功する場合と、適用に失敗してさまざまなデータ整合性エラーが表示される場合があります。
このシナリオで、統合データベースとリモート・データベースでメッセージが適用されていない場合は、適切なリカバリ手順を使用してリモートでバックアップからリカバリすることで問題を修正できます。それ以外の場合は、リモート・ユーザを再抽出するか、問題のあるリモートのリセットを統合データベースで発行し、同時にリモート・サイトで統合ユーザのリセットを発行する必要があります。
3) リモートのリセットを 1 つのリモート・ノードだけ、または複数のリモート・ノードで発行した場合
たとえば、統合データベースで特定の 1 つのリモート・ユーザに対してリモートのリセットを発行したが、対応するリモート・データベースで統合ユーザに対してリモートのリセットを発行していない場合に、この問題が発生することがあります。
これが原因の場合は、リモート・ユーザを再抽出するか、問題のあるリモートのリセットを統合データベースで発行し、同時にリモート・サイトで統合ユーザのリセットを発行する必要があります。
4) “Not applying operations that have already been applied” が発生しているメッセージ・ファイルで、メッセージ番号が繰り返される
この動作が発生した場合は、SQL Remote に問題が発生し、古いメッセージを削除できなくなっている可能性があります。その場合は、他のエラー・メッセージも表示されることがあります。表示されるメッセージは、使用しているメッセージ転送システムによって異なります。
このシナリオの場合は、メッセージ・ディレクトリのアクセス権を調べ、削除権限が適切に設定されているかどうかを確認してください。また、ファイルの削除に失敗する原因の詳細については、「Unlink <message file> Failure 5 – Permission denied」を参照してください。