0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Oracle] 消したテーブルを復活させる [オラクル]

Posted at

やりたいこと

間違えて削除したテーブルを元に戻したい。復活させたい。

通常、DDL文はすぐにコミットされるため、ROLLBACKはできませんが
DROP TABLE文で消したテーブルを復活させる方法を紹介します。
DELETE文でデータを消してしまった場合は別の記事で紹介しています。

仕組みの話

Oracle 10g以降、「DROP TABLE」文で削除したテーブルは「ゴミばこ(RECYCLEBIN)」に入るようになりました。
ゴミばこ内に永遠に残っているわけではありませんが、ごみばこに入っているものは元に戻すことができます。

ただし管理者によりゴミばこ機能を無効にされていたり、PURGEオプション付きで削除したテーブルはゴミ箱に入らなかったりするので、注意してください。

-- もとに戻せる可能性のあるDROP TABLE文
DROP TABLE <テーブル名>;
-- もとに戻せないDROP TABLE文
DROP TABLE <テーブル名> PURGE;

削除したテーブルを元に戻す

次のSELECT文でゴミばこ内のオブジェクトを確認できます。
ORIGINAL_NAME列が、削除されたオブジェクト名です。

-- ゴミばこ内のオブジェクトを確認する
SELECT OBJECT_NAME , ORIGINAL_NAME , DROPTIME FROM USER_RECYCLEBIN;

OBJECT_NAME                                  ORIGINAL_NAME
-------------------------------------------- --------------------------------
DROPTIME
-------------------
BIN$2cE0SI6XWeLgUwMEqMB08A==$0               TEST_TABLE
2022-03-09:12:00:37

ごみばこに入っているテーブルは次のSQL文でもとに戻すことができます

-- 元に戻すSQL文(テーブル名は消したテーブル名)
FLASHBACK TABLE <テーブル名> BEFORE DROP;
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?