~CDB全体と特定PDBを戻す方法+FRA設定と現在のSCN確認手順付き~
Oracleの「フラッシュバック・データベース」機能は、操作ミスや障害発生時に、ある時点の状態に迅速に巻き戻すことができる便利な復旧手段です。
この記事では、CDB環境でのフラッシュバックの前提条件、FRA設定、現在のSCNの取得、CDB/PDB単位での巻き戻し手順を網羅的に解説します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
🔰 フラッシュバック・データベースとは?
Oracleが記録するフラッシュバック・ログを使って、SCN(System Change Number)またはリストアポイントの時点にデータベースを巻き戻す機能です。
📋 フラッシュバックの前提条件
| 項目 | 内容 |
|---|---|
| アーカイブログモード | 必須 |
| FRAの設定 | 必須(ログの保存場所) |
| フラッシュバックログの有効化 | 必須 |
| バージョン要件 | 特定PDBのフラッシュバックは12.2以降 |
🛠 FRA(Fast Recovery Area)の設定手順
以下のSQLはデータベース稼働中にそのまま実行可能です。
-- FRAのサイズを指定
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 10G;
-- FRAの場所を指定(事前にOSで作成)
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '/u01/app/oracle/fast_recovery_area';
-- フラッシュバックログ保持期間(単位:分)
ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET = 120;
✅ 設定確認
SHOW PARAMETER db_recovery_file_dest
SHOW PARAMETER db_recovery_file_dest_size
SHOW PARAMETER db_flashback_retention_target
✅ フラッシュバックログの有効化
FRAを正しく設定した後、データベースを停止せずに以下のようにフラッシュバックを有効化できます。
ALTER DATABASE FLASHBACK ON;
📏 現在のSCNの確認方法
巻き戻し用のSCN(System Change Number)を確認するには、以下のSQLを使用します。
SELECT CURRENT_SCN FROM V$DATABASE;
この値を記録しておけば、指定したSCNに対してフラッシュバックすることが可能になります。
🖼 図解:CDBとPDBのフラッシュバック対象
+-----------------------------+
| CDB |
| +---------+ +---------+ |
| | PDB01 | | PDB02 | |
| +---------+ +---------+ |
+-----------------------------+
↑ ↑
特定PDBを戻す CDB全体を戻す
📘 CDB全体を巻き戻す手順
- 現在のSCNを確認(またはリストアポイントを作成)
-- SCNを確認
SELECT CURRENT_SCN FROM V$DATABASE;
-- 任意でリストアポイントを作成
CREATE RESTORE POINT before_error GUARANTEE FLASHBACK DATABASE;
- CDBをマウントモードに
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
- フラッシュバックの実行
-- リストアポイントで巻き戻す
FLASHBACK DATABASE TO RESTORE POINT before_error;
-- またはSCNで巻き戻す
FLASHBACK DATABASE TO SCN 12345678;
- RESETLOGSでオープン
ALTER DATABASE OPEN RESETLOGS;
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
📗 特定PDBのみを巻き戻す手順(12.2以降)
- 対象PDBをマウントモードにする
ALTER PLUGGABLE DATABASE pdb01 CLOSE IMMEDIATE;
※CLOSE することで PDB はマウントになる。
- リストアポイントを作成(またはSCN取得)
ALTER SESSION SET CONTAINER = pdb01;
-- SCN確認(必要なら)
SELECT CURRENT_SCN FROM V$DATABASE;
-- リストアポイント作成
CREATE RESTORE POINT before_update GUARANTEE FLASHBACK DATABASE;
- フラッシュバックを実行
FLASHBACK PLUGGABLE DATABASE pdb01 TO RESTORE POINT before_update;
-- または
FLASHBACK PLUGGABLE DATABASE pdb01 TO SCN 12345678;
- RESETLOGSでオープン
ALTER PLUGGABLE DATABASE pdb01 OPEN RESETLOGS;
✅ 操作まとめ表
| 項目 | CDB全体 | 特定PDB(12.2以降) |
|---|---|---|
| 対象 | 全コンテナ | 任意のPDB |
| モード | STARTUP MOUNT | OPEN MOUNT |
| フラッシュバック | FLASHBACK DATABASE | FLASHBACK PLUGGABLE DATABASE |
| 開始方法 | RESETLOGS | RESETLOGS |
| 現在SCNの確認 | V$DATABASE | コンテナ切替後に同様 |
⚠ 注意点
- FRAに十分な空き容量を確保しておかないと、必要なログが消去され、フラッシュバックできなくなる可能性があります。
- RESETLOGS後は以前のアーカイブログが無効になるため、RMANカタログの再登録が必要な場合もあります。
- DDLなど一部の操作はフラッシュバックでは戻せません。事前のバックアップ取得を推奨します。
✅ まとめ
Oracle CDB環境では、FRAを正しく設定することで、起動停止せずにフラッシュバックログの有効化が可能です。
また、CDB全体だけでなく、特定のPDBのみをフラッシュバックする運用も可能(12.2以降)です。
万が一の事態に備えて、現在のSCNの取得やリストアポイントの活用を習慣化しておくと安全です。
[参考]
4 CDBの作成および構成




コメント