SQL Remote の使用中でのオフラインなしのエラーの発生

概要:この文書では、”No Offline Transaction Log Found and Online Transaction Log Starts at ‘starting offset’ we are looking for a transaction log starting at ‘ending offset'” というエラーについて説明します。

エラー:“No Offline Transaction Log Found and Online Transaction Log Starts at <開始オフセット> we are looking for a transaction log starting at <終了オフセット>”.

原因:現在のログ・オフセットが、予想オフセットで開始していない。

症状:SQL Remote でメッセージの受信は実行されるが、メッセージの送信は実行されない。

解決法:次の診断手順に従って、メッセージの原因を特定します。

この問題は、リモート・データベースの抽出と構築を行い、その後でリモート・データベースの現在のトランザクション・ログを削除した場合に、リモートで発生することがあります。このシナリオでは、データベースを起動すると他のログ・ファイルが作成されますが、これは dbremote が探しているログ・ファイルではありません。

このデータベースは、まだレプリケートしていない新しく抽出したデータベースですが、それでも前述のエラーが表示されます。コマンド・ライン・ユーティリティの dbxtract で生成された reload.sql ファイル (このファイルは、-an スイッチを指定していない場合に生成されます) を実行すると、次のような START SUBSCRIPTION コマンドが実行されます。

START SUBSCRIPTION TO “cons”.”ProposalRouting” FOR “cons”
go

上記の START SUBSCRIPTION コマンドの実行対象のオフセットが含まれるログを削除すると、新しく抽出されたデータベースに対して最初に Message Agent を実行したときに、このエラーが発生します。

場合によっては、リモート・データベースを構築し、データベースとトランザクション・ログのファイルではなくデータベース・ファイルだけを展開することがあります。その結果、上記のエラーが発生します。

リモート・データベースの作成後にログをすぐに削除するには、次の手順に従います。

1.dbinit を使用してリモート・データベースを作成します。

2. 新しく初期化したリモート・データベースに接続し、reload.sql に対して READ コマンドを実行します。

3. データベース・エンジンを終了し、現在のトランザクション・ログを削除します。

4. データベースを起動し、DBISQL を使用して接続します。

5. 統合ユーザに対してリモートのリセットを発行します。

REMOTE RESET cons;
COMMIT;

これで、REMOTE RESET コマンドが含まれる短いログ・ファイルとともに、新しいリモート・データベースを展開できます。

このシナリオ以外の場合にこのエラーが発生する場合は、Message Agent が探しているトランザクション・ログを特定してください。オフライン・ディレクトリがある場合は、dbremote コマンドでこのディレクトリを指定してください。必要なログ・ファイルを特定できない場合は、このエラーが発生している各リモート・データベースを再抽出する必要があります。

このエラーが統合データベースで発生していて、必要なログを特定できないときは、場合によってはすべてのリモート・データベースを再抽出するか、すべてのノードでリモートのリセットを発行する必要があります。何らかの対処を行う前に、”Missing Transaction Log(s)” を参照し、トランザクション・ログが見つからない場合の対処方法を確認してください。

以上の手順を行った後も問題が発生する場合は、Sybase 製品の保守契約を結んでいるサポート・センタまでお問い合わせください。