Oracle Recovery Manager(RMAN)の BACKUP KEEP コマンド は、特定のバックアップを通常の保存方針(保持ポリシー)の枠外で管理し、長期間保護するための強力な機能です。
通常、RMAN は設定されたリカバリ・ウィンドウや冗長性に基づいて古いバックアップを「不要(OBSOLETE)」としてマークし、削除の対象にします。しかし、年度末の監査対応や法的要件、あるいはシステム変更前のスナップショットとして 「このバックアップだけは勝手に消えてほしくない」 という場合に、このコマンドが真価を発揮します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
結論:長期保存バックアップの最短手順
特定のバックアップをポリシーに関わらず保護するには、以下の手順で実行します。
- 計画: 保持期間(いつまで残すか)を決定する。
- 実行:
BACKUP ... KEEPコマンドで、期間指定または無期限で取得する。 - 管理:
LISTコマンドで保持期限を確認し、不要になれば手動で削除する。
1. BACKUP KEEP コマンドの仕組み
BACKUP KEEP コマンドを使用して取得されたバックアップは、制御ファイル内で「保持期間」が特別に管理されます。
- 保存ポリシーの無視: 設定されている
RETENTION POLICY(例:30日間保持)に関わらず、指定した期限まで削除対象(OBSOLETE)になりません。 - アーカイブ・バックアップ: データベース全体だけでなく、リカバリに必要なアーカイブログや制御ファイルも一式として保護されます。
2. 実装・実行例:状況に応じた長期保存
2.1 期間を指定して保持する(KEEP UNTIL)
指定した日付が来るまで、RMAN はこのバックアップを「不要」と判断しません。
-- データベース全体を 30 日間保持する設定でバックアップ
RMAN> BACKUP AS BACKUPSET DATABASE KEEP UNTIL TIME 'SYSDATE+30';
UNTIL TIME: 保持期限を定義します。期限を過ぎると、通常の保存方針の管理下に戻ります。
2.2 無期限に保持する(KEEP FOREVER)
法的な保管義務があるデータなど、自動削除を一切行わない場合に指定します。 ※注意:このオプションには リカバリ・カタログ(外部DB)の使用が必須 です。
-- すべてのアーカイブログを含め、無期限に保持する
RMAN> BACKUP AS BACKUPSET DATABASE PLUS ARCHIVELOG KEEP FOREVER;
3. アーカイブログに特化した保持設定
特定の区間のログのみをアーカイブ目的で長期保存する例です。
3.1 過去の特定範囲をバックアップ
-- 過去 7 日間分のアーカイブログのみを取得し、1 年間保持
RMAN> BACKUP AS BACKUPSET ARCHIVELOG FROM TIME 'SYSDATE-7' UNTIL TIME 'SYSDATE'
KEEP UNTIL TIME 'SYSDATE+365';
3.2 SCN(システム変更番号)による指定
-- 特定の SCN 以降のログを 180 日間保持
RMAN> BACKUP AS BACKUPSET ARCHIVELOG FROM SCN 100000
KEEP UNTIL TIME 'SYSDATE+180';
4. 保持バックアップの管理と削除
4.1 バックアップ状況の確認
どのバックアップがいつまで保持される設定かを確認します。
-- 保持設定されているバックアップのサマリを表示
RMAN> LIST BACKUP SUMMARY;
-- データベースの KEEP バックアップのみを詳細表示
RMAN> LIST BACKUP OF DATABASE KEEP;
4.2 不要になった場合の強制削除
保持期間内であっても、ストレージ容量の都合などで手動削除が必要な場合は FORCE オプションを使用します。
-- 特定のバックアップセット(例:123番)を強制削除
RMAN> DELETE FORCE BACKUPSET 123;
運用・監視・セキュリティ上の注意
- ストレージ逼迫のリスク:
KEEPバックアップは RMAN の自動クリーンアップ対象から外れるため、放置するとディスクを圧迫し続けます。 - カタログの要件:
KEEP FOREVERを使用する場合、ターゲットDBの制御ファイルだけでは情報を永続保持できないため、必ずリカバリ・カタログを利用してください。 - 戻し方(整合性確認):
CROSSCHECK BACKUP;を定期的に実行し、OSレベルでファイルが消えていないか確認することを推奨します。
FAQ:よくある質問
Q:KEEP UNTIL で指定した期限が切れたら、すぐに削除されますか? A:いいえ。期限が切れた瞬間に、通常の保存方針(RETENTION POLICY)に従うようになります。方針から外れていれば、その後の REPORT OBSOLETE や DELETE OBSOLETE の対象に含まれるようになります。
Q:Standard Edition 2 (SE2) でも使用できますか? A:はい、使用可能です。ただし、リカバリ・カタログを使用しない場合は KEEP FOREVER は指定できず、制御ファイルの保持期間(CONTROL_FILE_RECORD_KEEP_TIME)に依存するため、長期間の UNTIL TIME 指定には注意が必要です。
Q:このコマンドでバックアップした時、アーカイブログも自動で含まれますか? A:DATABASE PLUS ARCHIVELOG を指定すれば、そのバックアップをリカバリ可能な状態にするために必要なログがセットで保存されます。
まとめ
BACKUP KEEPは、通常の保存ルールを上書きしてバックアップを保護する機能。UNTIL TIMEで期限付き、FOREVERで無期限の保存が可能。- 取得したバックアップは
LIST BACKUP ... KEEPで定期的にチェックする。 - 自動削除されないため、ストレージの空き容量管理 を計画的に行う。
本記事は Oracle Database 19c を対象に解説します(他バージョンは画面や既定値が異なる場合があります)。
[参考]
Oracle Database バックアップおよびリカバリ・ユーザーズ・ガイド 19c
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?



コメント