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 製品の保守契約を結んでいるサポート・センタまでお問い合わせください。