正しく理解できれば、一つ気になります。 DB2はアーカイブモードです(オンラインバックアップが作成され、アーカイブログは引き続き表示されます)。
今日オフラインで完全バックアップを作成し、前の日に戻る必要がないことがわかっている場合など、すべてのアーカイブログを自由に削除できますか?今日のバックアップの復元を行う場合、「S000013.logが見つかりません」などのエラーは発生しません。
私の意見では大丈夫ですが、これを専門家に確認したいですか?
保持するログを決定する方法は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_BACKUPS
を3
に設定し、REC_HIS_RETENTN
を2
に設定すると、3つのバックアップが2日間保持されます。言い換えると、バックアップは、削除を検討する前に、少なくとも2日経過している必要があります。バックアップが2日以上経過すると、3つを超えるバックアップがあるかどうかが確認されます。これに該当する場合は、古いバックアップが削除されます。
ログの場合.....DISK
ではなくLOGARCHMETH1
をLOGRETAIN
に設定している限り、DB2は不要になったアーカイブログもクリーンアップします。保存された各バックアップ間でアーカイブログは保持されますが、その他はすべて削除されます。設定例:db2 update db cfg using LOGARCHMETH1 'DISK:/archive/logs'
。 LOGRETAIN
に設定すると、DB2はログを自動クリーンアップせず、自分でクリーンアップすることができます。
オフラインバックアップを復元する場合、必須ロールフォワードする必要はありません(ただし、データベースはバックアップの最後にROLLFORWARD PENDING状態になるため、WITHOUT ROLLING FORWARD
を使用することで回避できます。 RESTORE DATABASE
のオプション)。
つまり、アーカイブされたログファイルをcan削除します。
ただし、削除するwhichアーカイブログファイルには注意が必要な場合があることに注意してください。注意しないと、バックアップよりも新しいファイルが誤って削除される可能性があります。