AAC通信 -3ページ目

【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でした。


みなさんも、バックアップの遅延を感じたら確認してみては??


以上です。