Oracle フラッシュバックテクノロジーとは?

Oracle Master Gold

〜誤操作からの救世主、Oracleの強力な巻き戻し機能を解説〜

Oracle Databaseには、時間を巻き戻す魔法のような機能「フラッシュバックテクノロジー(Flashback Technology)」が備わっています。ユーザーが誤ってデータを消去したり、不適切な更新を行ったりした際、バックアップからリストアすることなく、迅速に過去の状態へ復元できる強力なツールです。

本記事では、フラッシュバックの基本概念から各種機能、そして運用で不可欠なUNDO情報(undo_retention)の管理までを分かりやすく解説します。

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

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

1. フラッシュバックテクノロジーとは?

フラッシュバックは、主にUNDOデータ(変更前のデータ情報)を利用して、過去のある時点の状態を参照・復元する仕組みです。

通常のリカバリ(メディアリカバリ)はバックアップファイルを書き戻してログを適用するため時間がかかりますが、フラッシュバックは稼働中のデータベース上で「巻き戻し」を行うため、圧倒的に高速です。

主なフラッシュバック機能一覧

機能名主な用途利用データ
Flashback Query過去時点のデータをSELECT参照するUNDO情報
Flashback Table表(テーブル)単位で過去の状態に戻すUNDO情報
Flashback Drop削除(DROP)した表をごみ箱から復元するリサイクルビン
Flashback Version Query特定の行が「いつ、どう変わったか」を確認するUNDO情報
Flashback Transaction特定のトランザクションのみを取り消すUNDO情報
Flashback DatabaseDB全体を指定した過去時点に巻き戻すフラッシュバックログ

2. よく使う機能の実装例

✅ Flashback Query(過去の状態を参照)

「データを更新しちゃったけど、5分前はどうなってたっけ?」という時に便利です。

-- 5分前のSCOTT.EMP表の状態をそのままSELECT
SELECT * 
FROM scott.emp AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '5' MINUTE);

✅ Flashback Table(表を過去時点に戻す)

テーブル全体を丸ごと過去に戻します。

-- 1. 行移動(ROW MOVEMENT)を有効化(必須設定)
ALTER TABLE scott.emp ENABLE ROW MOVEMENT;

-- 2. 表を1時間前の状態まで巻き戻す
FLASHBACK TABLE scott.emp 
TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' HOUR);

✅ Flashback Drop(削除された表の復元)

誤って DROP TABLE しても、Windowsのごみ箱のように戻せます。

-- 表を誤ってDROP
DROP TABLE scott.emp;

-- ごみ箱(Recycle Bin)から復元
FLASHBACK TABLE scott.emp TO BEFORE DROP;

3. UNDO保持時間(undo_retention)の重要性

フラッシュバック機能の多くはUNDO情報に依存しています。この情報が上書きされてしまうと、過去に遡ることができなくなります。

undo_retention パラメータ

UNDO情報を最低限保持する秒数を指定します。

-- 現在の保持設定を確認
SHOW PARAMETER undo_retention

-- 保持期間を1800秒(30分)に延長
ALTER SYSTEM SET undo_retention = 1800;

RETENTION GUARANTEE(保持の保証)

通常、UNDO領域が不足すると undo_retention 期間内でも古い情報から削除されますが、この設定を入れると「指定時間は絶対に消さない」ようになります。

-- 保証付きUNDO表領域の作成例
CREATE UNDO TABLESPACE undotbs2 
  DATAFILE 'undotbs2.dbf' SIZE 1G 
  RETENTION GUARANTEE;

4. 運用上のメリットとデメリット(注意点)

フラッシュバックは便利ですが、設定を厳しくしすぎるとDBの動作に悪影響を及ぼすことがあります。

設定項目メリットデメリット・リスク
undo_retention の延長より古い過去の状態まで復元可能になる。UNDO表領域の使用量が増加。サイズ不足だとエラー(ORA-30036)で更新処理が止まる。
RETENTION GUARANTEE確実に過去へ戻れることを保証できる。新しいトランザクションが領域不足で失敗するリスクが高まる。

【運用のポイント】

  • サイズ見積もり: undo_retention を長くするなら、相応の大きなUNDO表領域を確保すること。
  • 監視: UNDO表領域の使用率を常にモニタリングし、DML(更新処理)がエラーにならないよう配慮が必要です。

5. Flashback Database の設定(DB全体の巻き戻し)

データベース全体を過去に戻すには、通常のリカバリ領域(FRA)と専用のログ設定が必要です。

-- 1. アーカイブログモードの確認
ARCHIVE LOG LIST

-- 2. 高速リカバリ領域(FRA)の設定
ALTER SYSTEM SET db_recovery_file_dest = '/u01/app/oracle/flash_recovery_area';
ALTER SYSTEM SET db_recovery_file_dest_size = 5G;

-- 3. DB全体をマウント状態でフラッシュバック有効化
SHUTDOWN IMMEDIATE
STARTUP MOUNT
ALTER DATABASE FLASHBACK ON;
ALTER DATABASE OPEN;

6. FAQ

Q: フラッシュバックを実行しても戻せないケースはありますか?

A: undo_retention を超えてUNDO情報が上書きされた場合や、DROP TABLE 時に PURGE オプションを付けた場合は戻せません。また、表定義の変更(DDL)を跨ぐ復元には制限があります。

Q: Flashback Table と Flashback Database の使い分けは?

A: 特定の表のみに誤操作があった場合は Flashback Table を使用し、大規模なバッチ失敗や論理的な破損によりDB全体を戻す必要がある場合は Flashback Database を選択します。

Q: ROW MOVEMENT を有効化するデメリットはありますか?

A: 有効化すると、更新処理に伴い行の物理的な位置(ROWID)が変わる可能性があります。ROWIDを直接利用してデータアクセスを行っているアプリケーションがある場合は注意が必要です。


7. まとめ

Oracleのフラッシュバック機能は、誤操作によるデータ紛失を防ぐための「最強のセーフティネット」です。

  • 参照だけなら Flashback Query
  • 表ごと戻すなら Flashback Table
  • 消した表を戻すなら Flashback Drop

これらを使いこなすには、UNDO保持期間の設定と、UNDO表領域の適切なサイズ設計が不可欠です。万が一の事態に備え、バックアップ運用と併せてフラッシュバックを適切に構成しておきましょう。

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

[参考]
Oracle Flashback Technologyの使用

フラッシュバック・データベースの構築手順と運用の極意
Oracle Databaseを運用する上で、最も強力な「保険」の一つがフラッシュバック・データベース(Flashback Database)です。 ユーザーが誤って大規模な更新を行ったり、アプリケーションのバグでデータが壊れたりした際、デ…
高速リカバリ領域(FRA)の基本と設定方法を徹底解説
Oracle Databaseを運用していると、バックアップやアーカイブログ、障害発生時のリカバリなど、多くの「復旧に関する情報」を扱う必要があります。そのとき重要な役割を果たすのが高速リカバリ領域(FRA:Fast Recovery Ar…

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

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

コメント

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