Question & Answer
Question
不要なアーカイブ・ログ・ファイルのメンテナンス方法について教えてください。
Answer
不要なアーカイブ・ログ・ファイルをメンテナンスする主な方法として、以下の 3 つがあります。
- PRUNE HISTORY コマンドを使用し、特定の日付以前にアーカイブされたアーカイブ・ログ・ファイルをメンテナンスする方法
PRUNE HISTORY コマンドに AND DELETE パラメーターを指定して呼び出すか、 db2Prune API に DB2PRUNE_OPTION_DELETE フラグを指定して呼び出したタイミングで、指定した日付以前のリカバリー履歴ファイル内の項目が整理され、同時に対応するアーカイブ・ログ・ファイルが自動削除されます。
※ データベース構成パラメーター に LOGARCHMETH1 = LOGRETAIN が設定されている場合は、リカバリー履歴ファイル上の履歴は自動削除されますが、ログ・ファイルは削除されません。
実行例:履歴ファイルを確認して SAMPLE データベースのアーカイブ・ログを PRUNE HISTORY で削除- リカバリー履歴ファイルからバックアップの履歴をリストアップ
保管しておくべきリストア・セットを決め、それより前に取得したバックアップの復元に必要なログ・ファイルを特定します。今回は、"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
- アーカイブ・ログ・パスにアーカイブ・ログ・ファイルが存在していることを確認します。
$ 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
- リカバリー履歴ファイルからログ・ファイルのアーカイブ履歴をリストアップし、今回削除対象である "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
- "20140613150851" を指定し、PRUNE HISTORY コマンドに AND DELETE パラメーターを指定して実行します。
$ db2 prune history 20140613150851 and delete DB20000I PRUNE コマンドが正常に完了しました。
- 指定したタイム・スタンプ以前の履歴が消えていることを確認します。
$ 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 に設定した場合、ログ・ファイルだけでなく、 バックアップ・イメージおよびロード・コピー・イメージなど、リカバリー・オブジェクトも同時に削除できます。
- リカバリー履歴ファイルからバックアップの履歴をリストアップ
-
リカバリー・オブジェクトの自動削除機能と 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 日以上経過しているリカバリー・オブジェクトを削除します。
実行例- 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
- リカバリー履歴ファイルからバックアップの履歴をリストアップします。
$ 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
- アーカイブ・ログ・パスにアーカイブ・ログ・ファイルが存在していることを確認します。
$ 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
- BACKUP DATABASE コマンドによるデータベースのフル・バックアップを採取します。
$ db2 backup db sample to /db2backup
- 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
- 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
- NUM_DB_BACKUPS = 3, REC_HIS_RETENTN = 5 であることを確認します。
- "最初のアクティブ・ログ・ファイル" データベース構成パラメーターを参照したメンテナンス方法
"最初のアクティブ・ログ・ファイル" 構成パラメーターは、該当データベースにおける最初のアクティブ・ログ・ファイルのファイル名を示し、そのファイルよりも前のログ・ファイルは、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 レコードが選択されました。
- GET DATABASE CONFIGURATION コマンドによる確認
[{"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"}]
Was this topic helpful?
Document Information
Modified date:
23 August 2023
UID
swg21655160