【DB2バックアップ遅延対応】リカバリー履歴ファイル 保存期間変更
DB2V8.2にグレードアップしたところ、DB2のバックアップがとても遅くなりました。。。
というか、日を重ねるたび遅くなっていました。
バックアップイメージファイルはすでに作成完了しているのに、一向に終わらない。
その後何をやってるなぁと、いろいろ調べていたら、原因見つけました。
原因は、
リカバリー履歴ファイル(db2rhist.ascとdb2rhist.bak)
詳細は:http://ibm.com/jp/software/data/developer/handouts/pdf/db2v8_ope07.pdf
読んで字の如し。バックアップの履歴を記録するファイルだそうな。
しかも履歴を記録するだけで、直接つかわれるものではないらしい。
(さらにバックアップイメージファイルに履歴ファイルは含まれてるのだそう)
これが、日を重ねる度に大きくなり、書き込み完了まで時間がかかっていたというわけ。
なぜ、日を重ねるたびに大きくなるのかというと、
保存期間がデフォルトでは366日に設定してあるから!
その大きくなった履歴ファイルは、バックアップ終了後に1から再作成するのだからまた時間がかかるかかる!
これがバックアップの遅延に大きく影響していたわけですね。
で、対応策。今回は、代表的な対応策2つのうちの1つ、パラメータを変更を紹介します。
先ほど「デフォルトで366日」といったように、この保存期間は変えることができます。
(1)まず、DBのConfigurationを確認
>db2 connect to [DB]
>db2 get db cfg for [DB] | grep HIS
リカバリー履歴保持(日) (REC_HIS_RETENTN) = 366
(2)期間を変更
この値は運用状況など考慮した上で設定してください。
今回は例として30日としておきます。
>db2 attach to [ノード名]
>db2 update db cfg for [DB] using REC_HIS_RETENTN 30
>db2 terminate
>db2 force application all
>db2 deactivate database [DB]
>db2 activate database [DB]
で設定値が反映されます。
確認は
>db2 attach to [ノード名]
>db2 get db cfg for [DB] show detail | grep HIS
リカバリー履歴保持(日) (REC_HIS_RETENTN) = 30 30
となっていればOK。
確認も終わったところで、バックアップの時間の違いを比べて見ましょう。
私の環境では、バックアップイメージファイルは1.3Gほど。
履歴ファイルは40Mほどになっていました。
まずは366日の場合
>time db2 backup database [DB]
real 17m32.02s
次に30日の場合
>time db2 backup database [DB]
real 5m21.04s
となんと12分も短縮!
ちなみにこのときに作られた履歴ファイルは約10Mでした。
みなさんも、バックアップの遅延を感じたら確認してみては??
以上です。