IBM Support

[Db2] ログ・ファイルのメンテナンス方法

Question & Answer


Question

不要なアーカイブ・ログ・ファイルのメンテナンス方法について教えてください。

Answer

不要なアーカイブ・ログ・ファイルをメンテナンスする主な方法として、以下の 3 つがあります。
  1. PRUNE HISTORY コマンドを使用し、特定の日付以前にアーカイブされたアーカイブ・ログ・ファイルをメンテナンスする方法

    PRUNE HISTORY コマンドに AND DELETE パラメーターを指定して呼び出すか、 db2Prune API に DB2PRUNE_OPTION_DELETE フラグを指定して呼び出したタイミングで、指定した日付以前のリカバリー履歴ファイル内の項目が整理され、同時に対応するアーカイブ・ログ・ファイルが自動削除されます。
    ※ データベース構成パラメーター に LOGARCHMETH1 = LOGRETAIN が設定されている場合は、リカバリー履歴ファイル上の履歴は自動削除されますが、ログ・ファイルは削除されません。

    実行例:履歴ファイルを確認して SAMPLE データベースのアーカイブ・ログを PRUNE HISTORY で削除
    1. リカバリー履歴ファイルからバックアップの履歴をリストアップ
      保管しておくべきリストア・セットを決め、それより前に取得したバックアップの復元に必要なログ・ファイルを特定します。今回は、"20140613151650001" に取得したバックアップ以降を残すこととし、それ以前のバックアップの復元に必要な "S0001038.LOG" 以前を削除します。
      $ db2 "list history all for db sample" | grep " B "
        B  D  20140613145851001   N    D  S0001033.LOG S0001035.LOG  
        B  D  20140613150712001   N    D  S0001036.LOG S0001038.LOG  
        B  D  20140613151650001   N    D  S0001039.LOG S0001041.LOG  
        B  D  20140613153005001   N    D  S0001042.LOG S0001044.LOG  
        B  D  20140613153424001   N    D  S0001045.LOG S0001047.LOG
    2. アーカイブ・ログ・パスにアーカイブ・ログ・ファイルが存在していることを確認します。
      $ ls -la
      合計 47904
      drwxr-x---.  2 db2inst1 db2iadm1    4096  6月 13 15:54 2014 .
      drwxr-x---. 12 db2inst1 db2iadm1    4096  4月 18 21:39 2014 ..
      -rw-r-----.  1 db2inst1 db2iadm1 4202496  6月 13 14:59 2014 S0001033.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 4202496  6月 13 15:00 2014 S0001034.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 1548288  6月 13 15:01 2014 S0001035.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 4202496  6月 13 15:08 2014 S0001036.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 4202496  6月 13 15:08 2014 S0001037.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 1466368  6月 13 15:09 2014 S0001038.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 4202496  6月 13 15:17 2014 S0001039.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 4202496  6月 13 15:18 2014 S0001040.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 1396736  6月 13 15:19 2014 S0001041.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 4202496  6月 13 15:31 2014 S0001042.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 4202496  6月 13 15:31 2014 S0001043.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 1200128  6月 13 15:32 2014 S0001044.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 4202496  6月 13 15:35 2014 S0001045.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 4202496  6月 13 15:36 2014 S0001046.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 1409024  6月 13 15:37 2014 S0001047.LOG
    3. リカバリー履歴ファイルからログ・ファイルのアーカイブ履歴をリストアップし、今回削除対象である "S0001038.LOG" のタイムスタンプを確認します。(以下の例では、"20140613150851")
      $ db2 "list history all for db sample" | grep " X "    
        X  D  20140613145851      1    D  S0001033.LOG C0000009      
        X  D  20140613145951      1    D  S0001034.LOG C0000009      
        X  D  20140613150029      1    D  S0001035.LOG C0000009      
        X  D  20140613150712      1    D  S0001036.LOG C0000009      
        X  D  20140613150811      1    D  S0001037.LOG C0000009      
        X  D  20140613150851      1    D  S0001038.LOG C0000009      
        X  D  20140613151648      1    D  S0001039.LOG C0000009      
        X  D  20140613151747      1    D  S0001040.LOG C0000009      
        X  D  20140613151829      1    D  S0001041.LOG C0000009      
        X  D  20140613153005      1    D  S0001042.LOG C0000009      
        X  D  20140613153109      1    D  S0001043.LOG C0000009      
        X  D  20140613153149      1    D  S0001044.LOG C0000009      
        X  D  20140613153430      1    D  S0001045.LOG C0000009      
        X  D  20140613153532      1    D  S0001046.LOG C0000009      
        X  D  20140613153609      1    D  S0001047.LOG C0000009
    4. "20140613150851" を指定し、PRUNE HISTORY コマンドに AND DELETE パラメーターを指定して実行します。
      $ db2 prune history 20140613150851 and delete
      DB20000I  PRUNE コマンドが正常に完了しました。
    5. 指定したタイム・スタンプ以前の履歴が消えていることを確認します。
      $ ls -la
      合計 28544
      drwxr-x---.  2 db2inst1 db2iadm1    4096  6月 13 16:04 2014 .
      drwxr-x---. 12 db2inst1 db2iadm1    4096  4月 18 21:39 2014 ..
      -rw-r-----.  1 db2inst1 db2iadm1 4202496  6月 13 15:17 2014 S0001039.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 4202496  6月 13 15:18 2014 S0001040.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 1396736  6月 13 15:19 2014 S0001041.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 4202496  6月 13 15:31 2014 S0001042.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 4202496  6月 13 15:31 2014 S0001043.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 1200128  6月 13 15:32 2014 S0001044.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 4202496  6月 13 15:35 2014 S0001045.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 4202496  6月 13 15:36 2014 S0001046.LOG
      -rw-r-----.  1 db2inst1 db2iadm1 1409024  6月 13 15:37 2014 S0001047.LOG
      ※ AUTO_DEL_REC_OBJ データベース構成パラメーターを ON に設定した場合、ログ・ファイルだけでなく、 バックアップ・イメージおよびロード・コピー・イメージなど、リカバリー・オブジェクトも同時に削除できます。
       
  2. リカバリー・オブジェクトの自動削除機能と DB2 BACKUP DATABASE コマンドを使用したメンテナンス方法

    AUTO_DEL_REC_OBJ データベース構成パラメーターが ON であり、かつ、DB2 の BACKUP DATABASE コマンドによる表スペースまたはデータベースの全バックアップが実行された場合、リカバリー履歴ファイル内の項目が整理され、同時にリカバリー・オブジェクトが自動削除されます。 この場合、明示的に削除対象のログ・ファイル選定のためにタイム・スタンプを指定することができないため、データベース構成パラメーター NUM_DB_BACKUPS と REC_HIS_RETENTN に設定された基準値を超えるリカバリー・オブジェクトが自動削除されます。

    ※ リカバリー・オブジェクトとは、物理ログ・ファイル、バックアップ・イメージ、およびロード・コピー・イメージなどを指します。
    ※ データベース構成パラメーター に LOGARCHMETH1 = LOGRETAIN が設定されている場合は、リカバリー履歴ファイル上の履歴やバックアップ・イメージは自動削除されますが、ログ・ファイルは削除されません。
    例えば、AUTO_DEL_REC_OBJ = ON, NUM_DB_BACKUPS = 3, REC_HIS_RETENTN = 5 の環境で DB2 の BACKUP DATABASE コマンドが実行された場合、今回のバックアップ・イメージを含めて 3 回分より前のリカバリー・オブジェクトであり、かつ、5 日以上経過しているリカバリー・オブジェクトを削除します。

    実行例
    1. NUM_DB_BACKUPS = 3, REC_HIS_RETENTN = 5 であることを確認します。
      $ db2 get db cfg for sample | grep -e NUM_DB_BACKUPS -e REC_HIS_RETENTN
       保存するデータベース・バックアップ数   (NUM_DB_BACKUPS) = 3
       リカバリー履歴保持 (日)             (REC_HIS_RETENTN) = 5
    2. リカバリー履歴ファイルからバックアップの履歴をリストアップします。
      $ db2 list history backup all for db sample | grep " B "
        B  D  20130709184408001   F    D  S0000041.LOG S0000041.LOG  
        B  D  20130709184805001   F    D  S0000043.LOG S0000043.LOG  
        B  D  20130709185352001   F    D  S0000045.LOG S0000045.LOG  
    3. アーカイブ・ログ・パスにアーカイブ・ログ・ファイルが存在していることを確認します。
      $ ls -la /archlog/db2inst1/SAMPLE/NODE0000/C0000000
      合計 39304
      drwxr-x---. 2 db2inst1 db2iadm1    4096  7月  9 18:52 2013 .
      drwxr-x---. 3 db2inst1 db2iadm1    4096  5月 23 14:28 2013 ..
      -rw-r-----. 1 db2inst1 db2iadm1 4202496  7月  9 18:46 2013 S0000041.LOG
      -rw-r-----. 1 db2inst1 db2iadm1 3698688  7月  9 18:47 2013 S0000042.LOG
      -rw-r-----. 1 db2inst1 db2iadm1 4202496  7月  9 18:51 2013 S0000043.LOG
      -rw-r-----. 1 db2inst1 db2iadm1 4198400  7月  9 18:52 2013 S0000044.LOG
    4. BACKUP DATABASE コマンドによるデータベースのフル・バックアップを採取します。
      $ db2 backup db sample to /db2backup
    5. 2013/07/09/ 18:44 に取得したバックアップ履歴が削除され、新しい履歴が追加されていることを確認できます。
      $ db2 list history backup all for db sample | grep " B "
        B  D  20130709184805001   F    D  S0000043.LOG S0000043.LOG  
        B  D  20130709185352001   F    D  S0000045.LOG S0000045.LOG  
        B  D  20130723120755001   F    D  S0000045.LOG S0000045.LOG  
    6. 2013/07/09/ 18:44 に取得したバックアップ履歴に対応するアーカイブ・ログ・ファイルがアーカイブ・ログ・パスから消えていることを確認できます。
      $ ls -la /archlog/db2inst1/SAMPLE/NODE0000/C0000000
      合計 8212
      drwxr-x---. 2 db2inst1 db2iadm1    4096  7月 23 12:08 2013 .
      drwxr-x---. 3 db2inst1 db2iadm1    4096  5月 23 14:28 2013 ..
      -rw-r-----. 1 db2inst1 db2iadm1 4202496  7月  9 18:51 2013 S0000043.LOG
      -rw-r-----. 1 db2inst1 db2iadm1 4198400  7月  9 18:52 2013 S0000044.LOG
  3. "最初のアクティブ・ログ・ファイル" データベース構成パラメーターを参照したメンテナンス方法

    "最初のアクティブ・ログ・ファイル" 構成パラメーターは、該当データベースにおける最初のアクティブ・ログ・ファイルのファイル名を示し、そのファイルよりも前のログ・ファイルは、Db2 の視点でアーカイブが完了したと判断できます。
    よって、最初のアクティブ・ログ・ファイルに記載されたファイルよりも前のログ・ファイルは、クラッシュリ・カバリーに不要なログ・ファイルと判断可能であり、バックアップ等を使用したリカバリーが必要ない場合は、削除することが可能です。
    具体的な削除方法に関しては、PRUNE LOGFILE コマンドを使用するか、手動にて各システムごとに  OS コマンドによるコピーや削除を使用して実装する必要があります。
    ※ PRUNE LOGFILE コマンドは、 V10.1 以降での使用は非推奨です。

    "最初のアクティブ・ログ・ファイル" 構成パラメーターの値は、以下のいずれかの方法で確認可能です。
    • GET DATABASE CONFIGURATION コマンドによる確認
      実行例
      $ db2 get db cfg for sample | grep "最初のアクティブ・ログ・ファイル"
      最初のアクティブ・ログ・ファイル                        = S0000024.LOG
    • MON_GET_TRANSACTION_LOG 表関数による確認
      実行例
      $ db2 connect to sample
      $ db2 "select first_active_log from table(mon_get_transaction_log(-1))"
      
      FIRST_ACTIVE_LOG
      --------------------
                       24
      
      1 レコードが選択されました。
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PmcAAE","label":"Recovery-\u003ELogging"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Document Information

Modified date:
23 August 2023

UID

swg21655160