Partager via


トランザクション ログの制限に起因する問題

Exchange Team の太田です。

今回は、最近増加傾向にあるトランザクション ログの制限に起因する問題について書きます。
この問題は真新しいものではありませんが、トランザクション ログの制限から 5 年前後の周期で発生しやすいようです。
前回は Exchange 2000 出荷後 5 年経過した 2005 年に多くの問い合わせがありました。
それ以降、いったんはこのお問い合わせはあまり聞かなくなり鎮火しましたが、去年末くらいからまた増加傾向にあります。
そうです。Exchange 2003 出荷後から去年が 5 年目。また問題発生の周期がやってきているようです。
Exchange 2003 導入後、5 年前後の環境の管理者の方は必読です。

Exchange 2003 のトランザクション ログは "Enn00001.log" から連続した番号の付いたファイル名が使用され、"Ennffff0.log" まで増加します。
そして最後のトランザクション ログがいっぱいになると、下記イベント ID 1159 のエラー 0xfffffdf9 (JET_errLogSequenceEnd) を返し、対象のストレージ グループ内の全ストアをディスマウントします。
この動作は循環ログの設定の有無に関わらず、すべての環境で発生します。

イベント ID : 1159
種類 : エラー
ソース : MSExchangeIS
分類 : General
説明 :データベース "First Storage Group\Mailbox Store (SERVER)" にアクセス中に、関数 JTAB_BASE::EcEscrowUpdate でデータベース エラー 0xfffffdf9 が発生しました。

イベント ID 1159 を出力してストアをディスマウントした場合は、以下の手順でトランザクション ログのシーケンスをリセットする必要があります。

- 手順
1.トランザクション ログ ファイルが使い果たされたストレージ グループで、すべてのデータベースをディスマウントします。
2.ストレージ グループ内のそれぞれのデータベースがクリーン シャットダウンの状態にあることを確認します。

 a.[Exchange システム マネージャ] で、トランザクション ログ ファイルが使い果たされたストレージ グループの最初のストアを右クリックし、[プロパティ]
をクリックします。
 b.[データベース] タブをクリックし、[Exchange データベース] ボックスおよび [Exchange ストリーミング データベース] ボックスに指定されたデータベース ファイルのパスとファイル名をメモします。それぞれの Exchange データベースのファイルは 2 つ 1 組 (ファイル名拡張子 *.edb および *.stm のファイル) で構成されています。ストレージ グループ内の各ストアについて、この手順を実行します。
 c.[コマンド プロンプト] で、Exchange Server の bin フォルダに移動します。既定では、C:\Program Files\Exchsrvr\bin に移動します。
 d.以下のコマンドを実行します。

  Eseutil /mh <データベースのファイル名>

  例 : Eseutil /mh D:\MDBDATA\Priv1.edb

ストレージ グループ内の各データベースについて、この手順を実行します。このコマンドを実行すると、データベース ファイルのヘッダーが表示されます。ヘッダー内の State が Clean Shutdown であることを確認します。

3.[Exchange システム マネージャ] で、トランザクション ログ ファイルが使い果たされたストレージ グループを右クリックし、[プロパティ] をクリックします。
4.[全般] タブをクリックし、[トランザクション ログの場所] ボックスに指定されているトランザクション ログのパスをメモします。
5.[システム パスの場所] ボックスに指定されているチェックポイント ファイルのパスをメモします。
6.トランザクション ログ ファイルおよびチェックポイント ファイルを別の場所に移動します。ログ ファイルのファイル名拡張子は *.log、チェックポイント ファイルのファイル名拡張子は *.chk です。
7.[Exchange システム マネージャ] で、マウントが解除されたストレージ グループ内の最初のストアを右クリックし、[ストアのマウント] をクリックします。ストレージ グループ内の各ストアについて、この手順を実行します。これにより、このストレージ グループでログ ファイルのシーケンスがリセットされます。
8.ストレージ グループ内のすべてのデータベースの完全なバックアップを実行します。

注意事項 :
トランザクション ログのリセット実施後、以前のバックアップを用いて以降のトランザクション ログを再生させた最新への復元ができなくなります。
これはトランザクション ログのリセット作業によって、バックアップ内のトランザクション ログとリセット後のトランザクション ログのシーケンスが一致しないためです。
以前のバックアップを復元する必要が生じた場合、復元できるのは、トランザクション ログのリセット直前までですので、リセット後は速やかにバックアップを取得しましょう。

このように、トランザクション ログのシーケンスが上限に達した場合には、ストアのディスマウントというユーザーへの深刻な影響が発生するため、事前対処できるように日頃から監視することが大切です。
そこで、引き続きこの問題の監視方法について確認しましょう。

トランザクション ログ ファイルのシーケンスは最初に記載したように、"Enn00001.log" から始まり "Ennffff0.log" まで増加します。
つまり 1 つのシーケンスで生成されるトランザクション ログ ファイルの最大数は 1,048,560 (0xFFFF0) 個ということになります。
そして Exchange 2003 SP1 以降は、トランザクション ログのシーケンスが EnnE0000.log を越えると ESE の警告イベント、ID 514 を出力し、シーケンスが最大値に近づいていることを警告する修正が追加されています。

イベントID : 514
種類 : 警告
ソース : ESE
分類 : Logging/Recovery
説明 : Information Store First Storage Group : このインスタンスのログ シーケンス番号は、ほとんどすべて使用されています。現在のログ世代は 921000 (0x000E0DA8) で、ログ世代の最大値である 1048559 (0x000FFFEF) に近づいています。使用できる残りのログ世代は 127559 (0x0001F247) です。世代 1 から番号を付け直すには、インスタンスが完全にシャットダウンされ、すべてのログ ファイルが削除されている必要があります。バックアップは無効になります

トランザクション ログのシーケンスは、EnnFFFF0.log まで利用可能ですので、最初の ID 514 のイベントが出力されてからでも 131056 個 (1048560 個中) のトランザクション ログ ファイルを作成することができますので、多くの環境では ID 514 出力後も 1 ヶ月以上稼働できます。
なお、イベント ID 514 はトランザクション ログのシーケンスが EnnE0000.log を越えて以降、1000 個のトランザクション ログが生成されるたびに記録されます。またシーケンスが EnnFF000.log を超えると、10 個のトランザクション ログが生成されるたびに記録されます。

すでに System Center などの監視ソフトを導入されている環境では、このイベント ID 514 を監視し、出力を確認したら速やかにトランザクション ログ リセットのスケジュールを実施してください。
監視ツールを導入していない環境の場合は、エクスプローラーからトランザクション ログの現在の番号を直接確認し、現在の稼働状況からシーケンスの上限に達する、おおよその目処を把握してください。そして定期的にイベント ログを確認してください。

その前に、この記事を読み終わり次第、ご自身の管理している Exchange サーバーのイベント ログに ID 514 が記録されていないことを確認しましょう。