Oracleのデータベースで「表を誤ってDROPしてしまった…」そんなときに役立つのが フラッシュバック・ドロップ(Flashback Drop) 機能です。本記事では、初心者でも安心して復元操作ができるように、図解と実例を交えて徹底解説します。
🔰 フラッシュバック・ドロップとは?
Oracleのフラッシュバック・ドロップは、DROPされた表を**「リサイクルビン」から元の状態に復元する機能です。
削除しても即座にデータが失われるわけではないので、「やってしまった!」**となっても慌てず対応できます。
🧠 仕組みを図解で理解しよう!
┌────────────┐
│ 表(test) │
└────┬───────┘
│ DROP TABLE test;
▼
┌────────────┐
│ リサイクルビン │ ← 一時保管される
└────┬───────┘
│ FLASHBACK TABLE test TO BEFORE DROP;
▼
┌────────────┐
│ 表(test) │ ← 元通り!
└────────────┘
表をDROPすると、すぐには物理削除されず、内部的に「BIN$~」という名前でリネームされ、リサイクルビンに格納されます。
✅ 使用できる条件(設定をチェック)
確認項目 | コマンド例 | 確認方法・備考 |
---|---|---|
RECYCLEBIN の有効化 | SHOW PARAMETER recyclebin; | VALUE がON であること |
表領域の空き | 表領域の容量確認 | リサイクルビンが使うための領域が必要 |
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; |
使用条件 | recyclebin が ON 、表領域に空きがあること |
復元できないケース | PURGEオプション付きDROP、ユーザー削除など |
リサイクルビンの管理方法 | SHOW RECYCLEBIN 、PURGE で確認・削除可能 |
💡 補足:実業務で使う際の注意点
- リサイクルビンに残っている表はディスク領域を使用し続けるため、定期的な整理が必要です。
- 本番環境ではリサイクルビンをOFFにしているケースもあるので、復元できないことを前提にバックアップを取得しましょう。
コメント