web-dev-qa-db-ja.com

DB2アーカイブモード-完全オフラインバックアップを実行した後、すべてのアーカイブログを削除できますか?

正しく理解できれば、一つ気になります。 DB2はアーカイブモードです(オンラインバックアップが作成され、アーカイブログは引き続き表示されます)。

今日オフラインで完全バックアップを作成し、前の日に戻る必要がないことがわかっている場合など、すべてのアーカイブログを自由に削除できますか?今日のバックアップの復元を行う場合、「S000013.logが見つかりません」などのエラーは発生しません。

私の意見では大丈夫ですが、これを専門家に確認したいですか?

1
Dejan

保持するログを決定する方法は2つあります。自分で書いたもの。 db2 list history backup all for <db name>を発行する必要があります。これにより、履歴ファイルが表示され、最後のバックアップと最後の必要アーカイブログが見つかります。それより前のものは削除できます。

これで、自動化を追加できます。

接続しているデータベースの最初のステップセットdb2 update db cfg using AUTO_DEL_REC_OBJ ON。これにより、履歴ファイルを使用して、不要なバックアップとアーカイブログをプルーニングできるようになります。引き続き、豪華なスクリプトとテキスト解析を使用する必要がありますが、それは可能です。 (おそらく、データを取得するためにDB2内のテーブルを見つけることもできます。データを取得する方が簡単な場合があります。)ただし、db2 Prune history <timestamp> [with force option] and deleteを発行して、不要なバックアップを削除できます。 db2 Prune logfile prior to <log file name>を使用して、不要なアーカイブログを削除します。

これはすばらしいことですが、DB2にそれを完全に処理させてみませんか?問題のデータベースにdb2 update db cfg using AUTO_DEL_REC_OBJ ONを設定します。次に、db2 update db cfg using NUM_DB_BACKUPS <number>を設定できます。これにより、REC_HIS_RETENTN日間保持するバックアップの最大数が設定されます。次に、db2 update db cfg REC_HIS_RETENTN <number>を日数に設定します。 NUM_DB_BACKUPS3に設定し、REC_HIS_RETENTN2に設定すると、3つのバックアップが2日間保持されます。言い換えると、バックアップは、削除を検討する前に、少なくとも2日経過している必要があります。バックアップが2日以上経過すると、3つを超えるバックアップがあるかどうかが確認されます。これに該当する場合は、古いバックアップが削除されます。

ログの場合.....DISKではなくLOGARCHMETH1LOGRETAINに設定している限り、DB2は不要になったアーカイブログもクリーンアップします。保存された各バックアップ間でアーカイブログは保持されますが、その他はすべて削除されます。設定例:db2 update db cfg using LOGARCHMETH1 'DISK:/archive/logs'LOGRETAINに設定すると、DB2はログを自動クリーンアップせず、自分でクリーンアップすることができます。

3
Chris Aldrich

オフラインバックアップを復元する場合、必須ロールフォワードする必要はありません(ただし、データベースはバックアップの最後にROLLFORWARD PENDING状態になるため、WITHOUT ROLLING FORWARDを使用することで回避できます。 RESTORE DATABASEのオプション)。

つまり、アーカイブされたログファイルをcan削除します。

ただし、削除するwhichアーカイブログファイルには注意が必要な場合があることに注意してください。注意しないと、バックアップよりも新しいファイルが誤って削除される可能性があります。

1
Ian Bjorhovde