ログ・ファイルの管理

Db2® データベース・マネージャーは、番号スキームを使用してログ・ファイルに名前を付けます。 この命名の方針は、ログ・ファイルの再使用とログの順序に影響を与えます。 また、クライアント・アプリケーション接続を持たない Db2 データベースは、次のクライアント・アプリケーションがそのデータベース・サーバーに接続するときに新規のログ・ファイルを使用します。 Db2 データベース・ロギング動作のこれら 2 つの側面は、ログ・ファイルの管理の選択に影響を与えます。

データベース・ロギングを管理するときは、以下の項目を考慮に入れてください。

  • アーカイブ・ログの番号付け方法は、S0000000.LOGから始まり、S9999999.LOGまで続き、最大1000 万のログ・ファイルに対応します。 次の場合、データベース・マネージャーは S0000000.LOG に初期化されます。
    • データベース構成ファイルがロールフォワード・リカバリー可能に変更された場合
    • データベース構成ファイルがロールフォワード・リカバリー不可 に変更された場合
    • S9999999.LOG が使用された場合

    Db2 データベース・マネージャーでは、データベース・リストア後、ロールフォワード・リカバリーを実行するかどうかに関係なく、ログ・ファイル名を再使用します。 データベース・マネージャーでは、 ロールフォワード・リカバリー時に誤ったログが適用されないようになっています。 リストア操作後に Db2 データベース・マネージャーがログ・ファイル名を再使用する場合、 同じ名前の複数のログ・ファイルをアーカイブできるように、 新しいログ・ファイルは個別のディレクトリーにアーカイブされます。 ログ・ファイルのロケーションは、ロールフォワード・リカバリー時に適用できるように、 リカバリー履歴ファイルに記録されます。 ロールフォワード・リカバリー時には、 必ず正しいログが使用可能になっているようにする必要があります。

    ロールフォワード操作が正常完了すると、使用された最後のログは切り捨てられ、 その次の順次ログからロギングが開始されます。 ログ・パス・ディレクトリー中のログのうち、 ロールフォワード・リカバリーに使用された最後のログよりシーケンス番号が大きいログが再使用されます。 切り捨てが行われたログ内の、切り捨て位置より後の項目は、ゼロで上書きされます。 ロールフォワード・ユーティリティーを呼び出す前に、ログのコピーを必ず作成してください。 (ユーザー出口プログラムを呼び出して、ログを別の位置にコピーすることもできます。)

  • データベースが (ACTIVATE DATABASE コマンドによって) アクティブにされていない場合は、 すべてのアプリケーションがそのデータベースから切断されると、 Db2 データベース・マネージャーにより現行のログ・ファイルが切り捨てられます。 その後アプリケーションがデータベースに接続されると、 Db2 データベース・マネージャーにより新しいログ・ファイルへのロギングが開始されます。 システム上に小さなログ・ファイルが多数作成されるようであれば、ACTIVATE DATABASE コマンドを使用することも考慮できます。 このコマンドを使用すると、 アプリケーションの接続時にデータベースを初期設定する必要が生じることによるオーバーヘッドを節約できるだけでなく、 大規模なログ・ファイルを割り振って切り捨ててから また新しい大規模ログ・ファイルを割り振ることによるオーバーヘッドも節約できます。
  • アーカイブ・ログは、ログ・ファイル名が再利用されるため、データベースの複数の異なる ログ・シーケンス に関連付けることができます ( 図 1を参照)。 例えば、バックアップ 2 をリカバリーする場合、使用できるログ・シーケンスは 2 通りあります。 全データベースのリカバリー時に、特定の時点までロールフォワード操作を実行し、 ログの終わりまで達しないうちに処理を停止すると、新しいログ・シーケンスが作成されます。 2 つのログ・シーケンスを結合することはできません。 オンライン・バックアップ・イメージが最初のログ・シーケンスの全体にわたっている場合は、 ロールフォワード操作を完了するのにこのログ・シーケンスを使用する必要があります。

    リカバリー後に新規のログ・シーケンスを作成した場合は、 古いログ・シーケンスの表スペースのバックアップ・イメージはすべて無効になります。 このことは通常リストア時に認識されますが、データベースのリストア操作の直後に表スペースのリストア操作を行うと、 リストア・ユーティリティーは古いログ・シーケンスの表スペースのバックアップ・イメージを認識できません。 データベースが実際にロールフォワードされるまで、使用されるログ・シーケンスは不明です。 表スペースが従来のログ・シーケンスにある場合、表スペースのロールフォワード操作にキャッチしなければなりません。 無効なバックアップ・イメージを使用してリストア操作を行うと、正常に完了することもありますが、その表スペースの表スペース・ロールフォワード操作は失敗し、表スペースはリストア・ペンディング状態のままになります。

    例えば、表スペース・レベルのバックアップ操作であるバックアップ 3 が、上部ログ・シーケンスで S0000013.LOGS0000014.LOG の間で完了したとします ( 図 1を参照)。 データベース・レベルのバックアップ・イメージのバックアップ 2 を使用してリストアおよびロールフォワードを実行する場合は、 S0000012.LOG を使用してロールフォワードする必要があります。 その後、バックアップ 3 を取った際のログ・シーケンスか、それより新しいログ・シーケンスで、ロールフォワードを続行できます。 より新しいログ・シーケンスでロールフォワードを行う場合は、表スペース・レベルのバックアップ・イメージであるバックアップ 3 を使用して表スペースのリストアとロールフォワード・リカバリーを実行することはできません。

    表スペース・レベルのバックアップ・イメージのバックアップ 3 を使って 表スペースのログの最後までのロールフォワード操作を完了するには、 データベース・レベルのバックアップ・イメージのバックアップ 2 をリストアしてから、 上部のログ・シーケンスを使ってロールフォワードする必要があります。 表スペース・レベルのバックアップ・イメージのバックアップ 3 のリストアが終了すると、 ログの最後までのロールフォワード操作を開始できるようになります。

図1: ログ・ファイル名の再利用
Db2 データベース・マネージャーがデータベースのリストア後にログ・ファイル名を再使用する方法を示す図。