IBM Support

[Db2] リカバリー・オブジェクトの自動削除を構成後も、期待通りの削除が行われない場合の対処方法

Question & Answer


Question

  Db2 データベース・マネージャーを構成して、データベース・ログ・ファイル、バックアップ・イメージ、およびロード・コピー・イメージを、それらに関連するリカバリー履歴ファイルの項目が整理されるときに、自動的に削除するよう設定することができますが、時々、フル・データベース・バックアップ後も、いくつかのリカバリー・オブジェクトで期待通りの削除が行われない場合があります。
 
  このような場合、期待通りの削除が行われずに残されたリカバリー・オブジェクトを、削除する方法はありますか。

Cause

  リカバリー履歴ファイルの項目にあるリカバリー処理に依存するリカバリー・オブジェクト(例えば、バックアップ操作の項目の Earliest Log や Current Log)が、構成されたリカバリー・オブジェクトの自動削除でも保持されるべきリカバリー操作の項目で使用されている場合、たとえ、AUTO_DEL_REC_OBJ や NUM_DB_BACKUPS 等のリカバリー・オブジェクトの自動削除構成パラメーターで、自動削除される範囲に含まれていたとしても、フル・データベース・バックアップ後も自動削除されず、Db2 データベース・マネージャーによって残されます。

Answer

  最新のバックアップ・リカバリー・オブジェクトを除き、どんなリカバリー・オブジェクトも、"WITH FORCE OPTION" を使用した "PRUNE HISTORY" コマンドで、削除することができますので、たとえ、構成されたリカバリー・オブジェクトの自動削除で期待通りの削除が行われずに残ったリカバリー・オブジェクトでも、明示的な "WITH FORCE OPTION" 付の "PRUNE HISTORY" コマンドで削除することが可能です。
  例えば、データベースが、AUTO_DEL_REC_OBJ=ON と NUM_DB_BACKUPS=3 でのリカバリー・オブジェクトの自動削除が構成されているとします。
  この場合、最新の 3つのバックアップ・イメージより古いものは、フル・データベース・バックアップ後、自動的に削除されるはずです。
  しかし、もし、日付 "20180627095024" のバックアップ・イメージが、日付 "20180627095855" のリストア・データベース操作(これは、最新の 3つのバックアップ・イメージの日付の範囲 20180627095405 - 20180627100118 に入っています)で使用されている場合、日付 "20180627095024" のバックアップ・イメージは、たとえ、構成された自動削除で残されるべき最新の 3つのバックアップ・イメージの日付の範囲に入っていなくても、フル・データベース・バックアップ後も自動削除されず、Db2 データベース・マネージャーによって残されます。
  このような場合は、明示的に "WITH FORCE OPTION" 付の "PRUNE HISTORY" コマンドを使用して、日付 "20180627095024" のバックアップ・イメージの削除が可能です。詳しくは、"明示的なリカバリー・オブジェクトの削除の例" をご参照ください。
  例、db2 prune history 20180627095405 with force option and delete
* 明示的なリカバリー・オブジェクトの削除の例 - "WITH FORCE OPTION" 付の "PRUNE HISTORY" コマンドの使用
$ db2 create db TESTDB on /work/hiros/DB
$ db2 update db cfg for TESTDB using AUTO_DEL_REC_OBJ ON NUM_DB_BACKUPS 3 REC_HIS_RETENTN 0
$ db2 update db cfg for TESTDB using SOFTMAX 300 LOGBUFSZ 64 LOGFILSIZ 256 LOGPRIMARY 3 LOGSECOND 2 TRACKMOD YES LOGARCHMETH1 disk:/work/db2inst1/DB/LOG

$ db2 get db cfg for TESTDB
 Changed path to log files                  (NEWLOGPATH) =
 Path to log files                                       = /work/hiros/DB/e111q3a/NODE0000/SQL00001/LOGSTREAM0000/
 First log archive method                 (LOGARCHMETH1) = DISK:/work/hiros/DB/LOG/
 Number of database backups to retain   (NUM_DB_BACKUPS) = 3
 Recovery history retention (days)     (REC_HIS_RETENTN) = 0
 Auto deletion of recovery objects    (AUTO_DEL_REC_OBJ) = ON
$ db2 backup db TESTDB to /work/hiros/DB/BACKUP/e111q3a
Backup successful. The timestamp for this backup image is : 20180627095024
$ db2 list history all for TESTDB | grep -e "^Number" -e "^  B" -e "^  X" -e "^  A" -e "^  R" -e "^  F"
Number of matching file entries = 1
  B  D  20180627095024001   F    D  S0000000.LOG S0000000.LOG
$ db2 connect to TESTDB
$ db2 "create table TAB01 ( ID int, DATA char(16) )"

$ db2 "insert into TAB01 with DT(tval) as ( values(0) union all select tval+1 from DT where tval < 9999 ) select tval as ID, char(tval) as DATA from DT"

$ db2 +c "insert into TAB01 with DT(tval) as ( values(10000) union all select tval+1 from DT where tval < 19999 ) select tval as ID, char(tval) as DATA from DT"
$ db2 backup db TESTDB online to /work/hiros/DB/BACKUP/e111q3a
Backup successful. The timestamp for this backup image is : 20180627095405
$ db2 list history all for TESTDB | grep -e "^Number" -e "^  B" -e "^  X" -e "^  A" -e "^  R" -e "^  F"
Number of matching file entries = 5
  B  D  20180627095024001   F    D  S0000000.LOG S0000000.LOG
  X  D  20180627095141      1    D  S0000000.LOG C0000000
  X  D  20180627095236      1    D  S0000001.LOG C0000000
  X  D  20180627095408      P    D  S0000002.LOG C0000000
  B  D  20180627095405001   N    D  S0000000.LOG S0000001.LOG
$ db2 terminate
$ db2 backup db TESTDB to /work/hiros/DB/BACKUP/e111q3a
Backup successful. The timestamp for this backup image is : 20180627095649
$ db2 list history all for TESTDB | grep -e "^Number" -e "^  B" -e "^  X" -e "^  A" -e "^  R" -e "^  F"
Number of matching file entries = 6
  B  D  20180627095024001   F    D  S0000000.LOG S0000000.LOG
  X  D  20180627095141      1    D  S0000000.LOG C0000000
  X  D  20180627095236      1    D  S0000001.LOG C0000000
  X  D  20180627095408      1    D  S0000002.LOG C0000000
  B  D  20180627095405001   N    D  S0000000.LOG S0000001.LOG
  B  D  20180627095649001   F    D  S0000003.LOG S0000003.LOG
$ db2 restore db TESTDB from /work/hiros/DB/BACKUP/e111q3a taken at 20180627095024 replace existing without rolling forward
SQL2539W  The specified name of the backup image to restore is the same as the
name of the target database.  Restoring to an existing database that is the
same as the backup image database will cause the current database to be
overwritten by the backup version.
DB20000I  The RESTORE DATABASE command completed successfully.
$ db2 connect to TESTDB
... run some transactions ...
$ db2 backup db TESTDB online to /work/hiros/DB/BACKUP/e111q3a
Backup successful. The timestamp for this backup image is : 20180627100118
==>
  このとき、たとえ、フル・データベース・バックアップ後も、4番目に新しいバックアップは、自動削除されずに残ります。
$ db2 list history all for TESTDB | grep -e "^Number" -e "^  B" -e "^  X" -e "^  A" -e "^  R" -e "^  F"
Number of matching file entries = 11
  B  D  20180627095024001   F    D  S0000000.LOG S0000000.LOG
  X  D  20180627095141      1    D  S0000000.LOG C0000000
  X  D  20180627095236      1    D  S0000001.LOG C0000000
  X  D  20180627095408      1    D  S0000002.LOG C0000000
  B  D  20180627095405001   N    D  S0000000.LOG S0000001.LOG
  B  D  20180627095649001   F    D  S0000003.LOG S0000003.LOG
  R  D  20180627095855001   F       S0000000.LOG S0000000.LOG 20180627095024
  X  D  20180627100119      1    D  S0000000.LOG C0000001
  X  D  20180627100120      P    D  S0000001.LOG C0000001
  B  D  20180627100118001   N    D  S0000000.LOG S0000000.LOG
  A  P  20180627100129
$ ls -la /work/hiros/DB/BACKUP/e111q3a
total 1278528
drwxr-xr-x    2 e111q3a  db2users        256 Jun 27 10:01 .
drwxrwxrwx    8 hiros    jpncs          4096 Jun 27 09:49 ..
-rw-------    1 e111q3a  db2users  151064576 Jun 27 09:50 TESTDB.0.e111q3a.DBPART000.20180627095024.001
-rw-------    1 e111q3a  db2users  184627200 Jun 27 09:54 TESTDB.0.e111q3a.DBPART000.20180627095405.001
-rw-------    1 e111q3a  db2users  151064576 Jun 27 09:56 TESTDB.0.e111q3a.DBPART000.20180627095649.001
-rw-------    1 e111q3a  db2users  167845888 Jun 27 10:01 TESTDB.0.e111q3a.DBPART000.20180627100118.001
$ ls -lR /work/hiros/DB/LOG/e111q3a
...
/work/hiros/DB/LOG/e111q3a/TESTDB/NODE0000/LOGSTREAM0000/C0000000:
total 3632
-rw-r-----    1 e111q3a  db2users    1056768 Jun 27 09:52 S0000000.LOG
-rw-r-----    1 e111q3a  db2users     790528 Jun 27 09:54 S0000001.LOG
-rw-r-----    1 e111q3a  db2users      12288 Jun 27 09:56 S0000002.LOG
/work/hiros/DB/LOG/e111q3a/TESTDB/NODE0000/LOGSTREAM0000/C0000001:
total 24
-rw-r-----    1 e111q3a  db2users      12288 Jun 27 10:01 S0000000.LOG
==>
  このとき、TIMESTAMP 20180627095405 を指定した、"WITH FORCE OPTION" 付の "PRUNE HISTORY" コマンドを使用すると、TIMESTAMP 20180627095405 を含むそれ以前のリカバリー・オブジェクトが削除されます。
$ db2 prune history 20180627095405 with force option and delete
$ db2 list history all for TESTDB | grep -e "^Number" -e "^  B" -e "^  X" -e "^  A" -e "^  R" -e "^  F"
Number of matching file entries = 7
  X  D  20180627095408      1    D  S0000002.LOG C0000000
  B  D  20180627095649001   F    D  S0000003.LOG S0000003.LOG
  R  D  20180627095855001   F       S0000000.LOG S0000000.LOG 20180627095024
  X  D  20180627100119      1    D  S0000000.LOG C0000001
  X  D  20180627100120      P    D  S0000001.LOG C0000001
  B  D  20180627100118001   N    D  S0000000.LOG S0000000.LOG
  A  P  20180627100129
$ ls -la /work/hiros/DB/BACKUP/e111q3a
total 622880
drwxr-xr-x    2 e111q3a  db2users        256 Jun 27 10:20 .
drwxrwxrwx    8 hiros    jpncs          4096 Jun 27 09:49 ..
-rw-------    1 e111q3a  db2users  151064576 Jun 27 09:56 TESTDB.0.e111q3a.DBPART000.20180627095649.001
-rw-------    1 e111q3a  db2users  167845888 Jun 27 10:01 TESTDB.0.e111q3a.DBPART000.20180627100118.001
$ ls -lR /work/hiros/DB/LOG/e111q3a
...
/work/hiros/DB/LOG/e111q3a/TESTDB/NODE0000/LOGSTREAM0000/C0000000:
total 24
-rw-r-----    1 e111q3a  db2users      12288 Jun 27 09:56 S0000002.LOG
/work/hiros/DB/LOG/e111q3a/TESTDB/NODE0000/LOGSTREAM0000/C0000001:
total 24
-rw-r-----    1 e111q3a  db2users      12288 Jun 27 10:01 S0000000.LOG

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"Component":"","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF016","label":"Linux"},{"code":"PF033","label":"Windows"}],"Version":"","Edition":"","Line of Business":{"code":"LOB10","label":"Data and AI"}}]

Document Information

Modified date:
21 May 2019

UID

ibm10885098