保証付きリストアポイントを使ったフラッシュバック・データベースの実行手順

Oracle Master Gold

システム更新や大規模なデータパッチを当てる際、「失敗したらどうしよう」という不安はつきものです。そんな時に役立つのが、Oracleの保証付きリストアポイント(Guaranteed Restore Point)です。

この記事では、フラッシュバック技術の中でも特に強力な「保証付きリストアポイント」の使い方と、実地での操作例をわかりやすく解説します。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

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


🔰 保証付きリストアポイントとは?

リストアポイントは、DBの特定の時点に「栞(しおり)」を挟む機能です。

特に「保証付き(GUARANTEE)」オプションを付けると、フラッシュバックに必要なログがFRA(高速リカバリ領域)から自動削除されるのを防ぎます。

これにより、たとえ大量の更新が発生しても、ディスク容量が許す限り「確実に」その時点までDBを巻き戻せるようになります。

✅ 主な利用シーン

  • パッチ適用・アップグレード: 作業失敗時の「切り戻し」策として。
  • アプリケーション・リリース: 大規模なデータ移行前の安全策。
  • 検証環境の初期化: テスト終了後、即座に開始時の状態へリセット。

🗂 全体の流れ(図)

  1. Step1:アーカイブログ+FRAの構成(構成済み前提)
  2. Step2:保証付きリストアポイント作成(戻したい時点をマーク)
  3. Step3:任意の操作や変更(パッチ適用・テストなど)
  4. Step4:フラッシュバックで巻き戻す(リストアポイント指定)
  5. 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になった以降の時点にしか戻せません。

🏁 まとめ

  1. 構成確認: アーカイブログ、FRA、Flashback ONを確認。
  2. 作成: CREATE RESTORE POINT ... GUARANTEE ...
  3. 作業: 修正・変更・テスト。
  4. 復旧: FLASHBACK DATABASE TO RESTORE POINT ...
  5. 再開: OPEN RESETLOGSDROPを忘れずに!

保証付きリストアポイントは、DBAにとっての最強の「保険」です。計画停止を伴う大きな変更作業の際には、ぜひ活用してください。

本記事は Oracle Database 19c を対象に解説します(他バージョンは画面や既定値が異なる場合があります)。


[参考]
Oracle Flashback Technologyの使用

Oracle フラッシュバックテクノロジーとは?
〜誤操作からの救世主、Oracleの強力な巻き戻し機能を解説〜Oracle Databaseには、時間を巻き戻す魔法のような機能「フラッシュバックテクノロジー(Flashback Technology)」が備わっています。ユーザーが誤ってデ…

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

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

コメント

タイトルとURLをコピーしました