OracleのRMAN(Recovery Manager)は、データベース全体だけでなく、特定の表領域やデータファイル単位でも復元(リストア)が可能です。障害が一部の表領域に限定されている場合、全体のリストアを避けて、対象部分だけを復旧することでダウンタイムを大幅に短縮できます。
本記事では、RMANを使って特定の表領域だけを復元する方法を、実行例付きで解説します。
前提条件と準備
部分リストアを行うには、以下の条件を満たしている必要があります。
- RMANで定期的にバックアップを取得している
- 復元対象の表領域名またはデータファイルのパスを把握している
- アーカイブログモードが有効であること(リカバリが必要な場合)
基本手順
- 対象表領域をオフラインにする
- RMANで対象データファイルをリストア
- リカバリを実行
- 表領域をオンラインに戻す
実行例:USERS表領域のみを復元
1. 表領域をオフラインにする
SQL> ALTER TABLESPACE USERS OFFLINE IMMEDIATE;
2. RMANで該当データファイルをリストア
RMAN> STARTUP MOUNT;
RMAN> RESTORE TABLESPACE USERS;
このコマンドにより、USERS表領域に関連するすべてのデータファイルがバックアップから復元されます。
3. リカバリを実行
RMAN> RECOVER TABLESPACE USERS;
アーカイブログを利用して、最新の状態までロールフォワードします。
4. 表領域をオンラインに戻す
SQL> ALTER TABLESPACE USERS ONLINE;
復元が完了した表領域は、再び通常の利用が可能になります。
データファイル単位での復元も可能
表領域名ではなく、特定のデータファイルのフルパスを使ってリストアすることもできます。
RMAN> RESTORE DATAFILE '/u01/oradata/ORCL/users01.dbf';
RMAN> RECOVER DATAFILE '/u01/oradata/ORCL/users01.dbf';
この方法は、データファイル単位での障害対応時に有効です。
READ ONLYの表領域はリカバリ不要
対象の表領域がREAD ONLY
状態の場合は、リカバリ処理を省略することができます。
-- 表領域をオフラインに
SQL> ALTER TABLESPACE ARCHIVE_TS OFFLINE;
-- RESTOREのみで完了
RMAN> RESTORE TABLESPACE ARCHIVE_TS;
-- 再びオンラインに
SQL> ALTER TABLESPACE ARCHIVE_TS ONLINE;
まとめ
RMANを使えば、Oracleデータベースの特定の表領域やデータファイルのみをリストアすることが可能です。これにより、障害発生時の影響範囲を最小限に抑え、システムの早期復旧を実現できます。
- 対象表領域をオフラインにしてからリストア・リカバリ
- アーカイブログモードであれば最新状態への復旧も可能
- READ ONLY表領域はRESTOREのみで対応可能
部分リストアの手順をマスターしておくことで、障害対応力の高い運用体制を構築できます。ぜひ定期的な演習や検証環境でのテストも実施しておきましょう。