システム更新や大規模なデータパッチを当てる際、「失敗したらどうしよう」という不安はつきものです。そんな時に役立つのが、Oracleの保証付きリストアポイント(Guaranteed Restore Point)です。
この記事では、フラッシュバック技術の中でも特に強力な「保証付きリストアポイント」の使い方と、実地での操作例をわかりやすく解説します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
🔰 保証付きリストアポイントとは?
リストアポイントは、DBの特定の時点に「栞(しおり)」を挟む機能です。
特に「保証付き(GUARANTEE)」オプションを付けると、フラッシュバックに必要なログがFRA(高速リカバリ領域)から自動削除されるのを防ぎます。
これにより、たとえ大量の更新が発生しても、ディスク容量が許す限り「確実に」その時点までDBを巻き戻せるようになります。
✅ 主な利用シーン
- パッチ適用・アップグレード: 作業失敗時の「切り戻し」策として。
- アプリケーション・リリース: 大規模なデータ移行前の安全策。
- 検証環境の初期化: テスト終了後、即座に開始時の状態へリセット。
🗂 全体の流れ(図)
- Step1:アーカイブログ+FRAの構成(構成済み前提)
- Step2:保証付きリストアポイント作成(戻したい時点をマーク)
- Step3:任意の操作や変更(パッチ適用・テストなど)
- Step4:フラッシュバックで巻き戻す(リストアポイント指定)
- Step5:RESETLOGSでオープン
🛠 Step1:事前準備(前提条件)
この機能を利用するには、以下の構成が完了している必要があります。
- アーカイブログモード:
ARCHIVELOG - FRA(高速リカバリ領域): 設定済み(
DB_RECOVERY_FILE_DEST) - フラッシュバック有効化:
ALTER DATABASE FLASHBACK ON;
🛠 Step2:保証付きリストアポイントの作成
作業を開始する直前に、SQL*Plusでリストアポイントを作成します。
-- SYSDBAユーザーで実行
CREATE RESTORE POINT before_test GUARANTEE FLASHBACK DATABASE;
エンジニアの目:
GUARANTEEキーワードがポイントです。これが無いと、FRAの容量が不足した際にログが削除され、巻き戻せなくなるリスクがあります。
🧪 Step3:任意の操作(例:パッチ適用やテスト)
ここからは、通常通り作業を行います。万が一、以下の例のように誤ってデータを消してしまっても大丈夫です。
-- 現在の状態を確認
SQL> SELECT * FROM scott.sales;
ID ITEM AMOUNT
---------- ---------- ----------
1 ノートPC 150000
2 マウス 2000
-- 誤操作:テーブルを削除してしまった!
SQL> DROP TABLE scott.sales;
表が削除されました。
-- 参照不可
SQL> SELECT * FROM scott.sales;
ORA-00942: 表またはビューが存在しません。
🔁 Step4:フラッシュバックの実行(巻き戻し)
問題が発生した場合は、RMAN(Recovery Manager)を使用して作成したポイントまで一気に戻します。
① インスタンスをMOUNTモードで起動
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP MOUNT
② RMANでフラッシュバック実行
$ rman target /
RMAN> FLASHBACK DATABASE TO RESTORE POINT before_test;
🔓 Step5:RESETLOGSでオープン
フラッシュバック後は、新しい時間軸(インカネーション)でDBを開く必要があります。
RMAN> ALTER DATABASE OPEN RESETLOGS;
これにより、削除されたテーブルも無事に復旧し、通常運用を再開できます。
SQL> SELECT * FROM scott.sales; -- 表が元に戻っている!
SQL> SELECT * FROM scott.sales;
ID ITEM AMOUNT
---------- ---------- ----------
1 ノートPC 150000
2 マウス 2000
SQL> CREATE RESTORE POINT before_test GUARANTEE FLASHBACK DATABASE; ★保証付きリストアポイントを作成
リストア・ポイントが作成されました。
SQL> DROP TABLE scott.sales; ★テーブルを削除
表が削除されました。
SQL> SELECT * FROM test1.sales;
SELECT * FROM test1.sales
*
行1でエラーが発生しました。:
ORA-00942: 表またはビューが存在しません。
SQL> SHUTDOWN IMMEDIATE
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> STARTUP MOUNT
ORACLEインスタンスが起動しました。
Total System Global Area 1543500120 bytes
Fixed Size 8925528 bytes
Variable Size 889192448 bytes
Database Buffers 637534208 bytes
Redo Buffers 7847936 bytes
データベースがマウントされました。
SQL> exit
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0との接続が切断されました。
[oracle@v19single ~]$ rman target /
Recovery Manager: Release 19.0.0.0.0 - Production on 土 3月 29 17:15:22 2025
Version 19.21.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
ターゲット・データベース: V19 (DBID=2957249400、未オープン)に接続されました
RMAN> FLASHBACK DATABASE TO RESTORE POINT before_test; ★保証付きリストアポイントにフラッシュバックデータベースを実行
flashbackを25-03-29で開始しています
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=44 デバイス・タイプ=DISK
メディア・リカバリを開始しています
メディア・リカバリが完了しました。経過時間: 00:00:01
flashbackを25-03-29で終了しました
RMAN> ALTER DATABASE OPEN RESETLOGS;
文が処理されました
RMAN> exit
Recovery Managerが完了しました。
[oracle@v19single ~]$ sqlplus scott/tiger
SQL*Plus: Release 19.0.0.0.0 - Production on 土 3月 29 17:16:06 2025
Version 19.21.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
最終正常ログイン時間: 土 3月 29 2025 16:49:10 +09:00
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0
に接続されました。
SQL> col item for a10
SQL> SELECT * FROM scott.sales; ★表が元に戻っている
ID ITEM AMOUNT
---------- ---------- ----------
1 ノートPC 150000
2 マウス 2000
❌ 不要になったらリストアポイントを削除
作業が終わったら必ず削除しましょう。
DROP RESTORE POINT before_test;
※元記事の例では before_patch となっていましたが、作成した名前に合わせて削除してください。
❓ FAQ:よくある質問
Q: フラッシュバックを有効化(FLASHBACK ON)しなくても使えますか?
A: はい。「保証付き」であれば、データベース全体のフラッシュバックがオフでも作成可能です。ただし、作成した瞬間からログの生成が始まるため、FRAの空き容量には十分注意してください。
Q: 複数のリストアポイントを作成できますか?
A: 可能です。ただし、古いポイントを残したまま新しいポイントを作ると、古い時点まで戻すためのログがすべて保持され続けるため、ストレージ消費が加速します。
Q: DROP RESTORE POINTを忘れるとどうなりますか?
A: Oracleは「いつか戻るかもしれない」と考え、古いログを絶対に消さなくなります。その結果、FRAが満杯になり、データベースがアーカイブログを出力できず停止(ハング)します。作業後の削除は絶対です。
📝 運用上の注意点まとめ
| 注意点 | 内容 |
| FRAの容量管理 | リストアポイント保持中は、ログが削除されず増え続けます。 |
| RESETLOGSの必須性 | 過去に戻った後は、必ず OPEN RESETLOGS が必要です。 |
| 作業後のDROP | 作業完了後は、即座にリストアポイントを削除するのが鉄則です。 |
| 構成後の時点のみ | 機能がONになった以降の時点にしか戻せません。 |
🏁 まとめ
- 構成確認: アーカイブログ、FRA、Flashback ONを確認。
- 作成:
CREATE RESTORE POINT ... GUARANTEE ... - 作業: 修正・変更・テスト。
- 復旧:
FLASHBACK DATABASE TO RESTORE POINT ... - 再開:
OPEN RESETLOGS& DROPを忘れずに!
保証付きリストアポイントは、DBAにとっての最強の「保険」です。計画停止を伴う大きな変更作業の際には、ぜひ活用してください。
本記事は Oracle Database 19c を対象に解説します(他バージョンは画面や既定値が異なる場合があります)。
[参考]
Oracle Flashback Technologyの使用

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


コメント