Oracleのフラッシュバック・ドロップとは?誤って削除した表を一瞬で元に戻す方法

Oracle Master Gold

Oracleのデータベースで「表を誤ってDROPしてしまった…」そんなときに役立つのが フラッシュバック・ドロップ(Flashback Drop) 機能です。本記事では、初心者でも安心して復元操作ができるように、図解と実例を交えて徹底解説します。


🔰 フラッシュバック・ドロップとは?

Oracleのフラッシュバック・ドロップは、DROPされた表を**「リサイクルビン」から元の状態に復元する機能です。
削除しても即座にデータが失われるわけではないので、
「やってしまった!」**となっても慌てず対応できます。


🧠 仕組みを図解で理解しよう!

┌────────────┐
│ 表(test) │
└────┬───────┘
│ DROP TABLE test;

┌────────────┐
│ リサイクルビン │ ← 一時保管される
└────┬───────┘
│ FLASHBACK TABLE test TO BEFORE DROP;

┌────────────┐
│ 表(test) │ ← 元通り!
└────────────┘

表をDROPすると、すぐには物理削除されず、内部的に「BIN$~」という名前でリネームされ、リサイクルビンに格納されます。


✅ 使用できる条件(設定をチェック)

確認項目コマンド例確認方法・備考
RECYCLEBINの有効化SHOW PARAMETER recyclebin;VALUEONであること
表領域の空き表領域の容量確認リサイクルビンが使うための領域が必要
UNDO情報UNDO_RETENTIONなどundoが必要なフラッシュバックとは違い、フラッシュバック・ドロップには不要

🛠 実践!フラッシュバック・ドロップを試してみよう

以下にテーブルの作成から、DROP→復元までを実際に試してみましょう。

💾 テーブル作成とデータ挿入

CREATE TABLE test_flashback (
id NUMBER,
name VARCHAR2(100)
);

INSERT INTO test_flashback VALUES (1, 'Oracleフラッシュバック');
COMMIT;

🗑 誤ってDROP!

DROP TABLE test_flashback;

♻️ リサイクルビンを確認

SHOW RECYCLEBIN;

-- 結果例
-- ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
-- ---------------- ------------------------------ ------------ -------------------
-- TEST_FLASHBACK BIN$KJ32lskjf23jlf== TABLE 2025-03-29:15:00:00

🔙 復元(フラッシュバック)!

FLASHBACK TABLE test_flashback TO BEFORE DROP;

📋 復元確認

SELECT * FROM test_flashback;

-- 結果
-- ID NAME
-- ---------- ------------------------------
-- 1 Oracleフラッシュバック

完全復元されました!


🚨「完全削除」されるケースに注意!

以下の操作ではリサイクルビンに残らず、復元はできません

操作説明
DROP TABLE xxx PURGE完全削除
PURGE TABLE xxxリサイクルビンから手動削除
DROP USER xxx CASCADEユーザー削除と同時に表も完全削除
表領域圧迫によりOracleが自動削除表領域を空けるためOracleが古いものを自動削除

🧹 不要なリサイクルビンを整理するには?

-- 特定の表のみ削除
PURGE TABLE test_flashback;

-- 全セッションのリサイクルビンを削除(DBA用)
PURGE DBA_RECYCLEBIN;

-- 自分のセッションのリサイクルビンを削除
PURGE RECYCLEBIN;

🔧 リサイクルビンのON/OFF設定

  • セッション単位(即反映):
ALTER SESSION SET recyclebin = OFF;
  • システム全体(再起動後有効):
ALTER SYSTEM SET recyclebin = OFF SCOPE = SPFILE;

🆚 フラッシュバック・クエリとの違いは?

機能名対象必要な情報用途
フラッシュバック・ドロップ表全体リサイクルビンDROP後に表を復元
フラッシュバック・クエリ行単位UNDO情報特定の時点のデータを参照

どちらも「過去に戻る」機能ですが、使い方や対象が異なります。


✍ まとめ

ポイント内容
フラッシュバック・ドロップとは?DROP表を復元できる機能(リサイクルビン利用)
コマンドFLASHBACK TABLE 表名 TO BEFORE DROP;
使用条件recyclebinON、表領域に空きがあること
復元できないケースPURGEオプション付きDROP、ユーザー削除など
リサイクルビンの管理方法SHOW RECYCLEBINPURGEで確認・削除可能

💡 補足:実業務で使う際の注意点

  • リサイクルビンに残っている表はディスク領域を使用し続けるため、定期的な整理が必要です。
  • 本番環境ではリサイクルビンをOFFにしているケースもあるので、復元できないことを前提にバックアップを取得しましょう。


[参考]
バックアップおよびリカバリ・ユーザーズ・ガイド

コメント

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