Info2softは、ウェブサイトでより快適で適切な閲覧体験を提供するためにCookieを使用しています。 プライバシーポリシー
Loading...
Oracle Recovery Manager(RMAN)はOracle標準搭載のバックアップ・リカバリツールです。DBAはRMANを使用してOracleデータベースのバックアップを取得し、データファイル、制御ファイル、SPFILE、REDOログなどを保護します。ただし、以下の理由からRMANバックアップの削除が必要になるケースがあります。
DELETE BACKUPコマンドを実行すると、RMANは2つの処理を実行します。
1. ディスク上のバックアップピースを物理的に削除(テープバックアップの場合はメディアマネージャーに対し、テープ領域を再利用可能とする通知を送信)
2. 制御ファイルまたはリカバリカタログから対応するレコードを削除
OSのrmまたはdelコマンドで直接バックアップファイルを削除した場合、RMANの制御ファイルにはバックアップが存在すると記録されたままになります。CROSSCHECKを実行後DELETE EXPIREDを実行することでカタログレコードをクリーンアップできます。ただし、物理的に削除されたファイルを復元することはできません。
テープバックアップの場合、物理テープファイルを完全消去するかどうかは、使用するメディアマネージャー(Oracle Secure Backupまたはサードパーティ製SBTライブラリ)の仕様に依存します。多くの場合、単にテープ領域を再利用可能な状態にフラグ付けするだけです。
下記の表にRMAN削除系コマンドの基本構文をまとめました。各運用シナリオに応じた詳細な実行手順も後述します。
|
コマンド |
処理内容 |
使用する場面 |
|
DELETE BACKUP |
ディスク/テープ上のバックアップセットまたはバックアップピースを物理削除し、カタログレコードも同時に消去します。 |
削除対象のバックアップキーを明確に把握している場合に使用。必ず絞り込み条件を指定し、無条件実行は禁止。 |
|
DELETE BACKUP OF |
特定のデータベースオブジェクト(データファイル、表領域、アーカイブログ、制御ファイル)に対応するバックアップのみ削除します。 |
特定の表領域のバックアップ、またはアーカイブログのバックアップだけを削除し、他のバックアップは残したい場合。 |
|
DELETE OBSOLETE |
事前設定した保存ポリシー(RECOVERY WINDOWまたはREDUNDANCY)に基づき、不要と判定されたバックアップを一括削除します。 |
定時クリーンアップ運用。保存ポリシー設定後毎日実行する。事前にREPORT OBSOLETEで削除対象を確認すること。 |
|
DELETE EXPIRED |
CROSSCHECK実行後、実ファイルが存在しない(EXPIRED)と判定されたバックアップのカタログレコードのみ削除。物理ファイルには触れません。 |
RMAN外部でOSコマンドによりバックアップファイルが削除され、カタログと不整合が生じた際のクリーンアップ。リストアエラーを回避するため実施。 |
RMANのDELETE BACKUPには直接日時指定のUNTIL句が存在しないため、LIST BACKUPで対象のバックアップキーを抽出し、1つずつ削除する必要があります。
実行例:
# 7日以上古いデータベースバックアップを抽出
RMAN> LIST BACKUP OF DATABASE COMPLETED BEFORE 'SYSDATE-7';
-- 出力されたBSキーを記録し、個別削除
RMAN> DELETE BACKUP 2048;
RMAN> DELETE BACKUP 2049;
シェルスクリプトで自動化する場合は、一時的に保存ポリシーを変更しREPORT OBSOLETEを活用する方法がありますが、意図しないバックアップまで削除するリスクが伴います。多くのDBAはV$BACKUP_PIECEに対する小規模なPL/SQLループを作成し、日時条件に基づいた精密な削除処理を実装しています。
RMAN> DELETE BACKUP OF ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-3';
上記コマンドはRMANが作成したバックアップピースのみ削除し、元のアーカイブログファイル(例:/u01/arch/arch_1_123.arc)はそのまま残ります。バックアップストレージが逼迫しているが、時点リカバリに元のアーカイブログが必要、または別ストレージに複製する予定がある場合に活用します。
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-3' BACKED UP 1 TIMES TO DEVICE TYPE DISK;
このコマンドはアーカイブログディレクトリから.arcまたは.logファイルを物理削除します。バックアップピースは削除されません。
注意事項:
不要なRMANバックアップピースを個別指定して削除する場合は下記構文を使用します。
RMAN> DELETE BACKUPPIECE 'バックアップピースのフルパス';
BACKUPPIECEの後に記述するのはファイルの完全なパスまたはテープハンドル名です。パスを確認するにはLIST BACKUP OF DATABASEを実行してください。
RMANは指定したパスのバックアップピースのみディスクから物理削除し、対応するカタログレコードを消去します。同一バックアップセット内の他のピースには影響しません。
RMANバックアップの削除作業を自動化したい場合は、事前に保存ポリシーを設定します。
例:7日間のリカバリウィンドウを設定し、7日以上古いバックアップを自動的にOBSOLETEとする。数値は任意に変更可能。
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
毎日実行するシェルスクリプト例:
#!/bin/bash
rman target / catalog rman/rman@catdb <
バックアップ削除実行時にエラーが発生する場合の対処法を記載します。
テープ(SBT)デバイスのバックアップを削除する際に頻出するエラーです。
下記コマンドで回避できます:
RMAN> ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE sbt;
RMAN> DELETE OBSOLETE;
CROSSCHECKを実行後DELETE EXPIREDでカタログの不要レコードを削除します。CROSSCHECK実行後もステータスがAVAILABLEのままの場合、ファイル自体は存在するが権限破損・ファイル破損により読み取り不可の可能性があります。ファイルが消失したと断定する前にVALIDATE BACKUPでファイルの健全性を確認してください。
cronジョブで単一または少数のデータベースのバックアップ管理を行うことは可能です。しかし、物理・仮想・クラウド環境にまたがる数十台のOracleインスタンスを運用する場合、すべての環境に個別のRMANスクリプトを作成・保守するのは非常に手間がかかります。
Info2softが開発したi2Backupはこの課題に対応したエンタープライズ向けバックアッププラットフォームです。統合された管理画面からOracleバックアップのライフサイクル(自動クリーンアップを含む)を一括管理可能なため、DBごとにRMANスクリプトを作成・保守する必要がなくなります。
管理者は中央のWebコンソール上でバックアップスケジュールと保存ポリシーを定義するだけで、残りの処理はプラットフォームが自動実行します。事前設定したスケジュールに従ってバックアップを取得し、バックアップファイルがOBSOLETEになると、設定したルールに基づき自動削除を実行します。
Oracleバックアップ管理の主要機能:
現在60日間の無料トライアルを利用可能です:
本記事ではRMANによる期限切れバックアップの安全な削除方法を解説しました。手順は複雑ではありません。
保存ポリシーを設定しシェルスクリプトによる毎日自動実行も可能です。複数台のOracleデータベースを運用している場合はInfo2softのi2Backupのような一元管理プラットフォームの導入を検討してください。