LoginSignup
0
2

More than 1 year has passed since last update.

[Oracle] 間違えて消したデータを復活させる [オラクル]

Posted at

やりたいこと

間違えて削除したデータを元に戻したい。復活させたい。

DELETE文でデータを消してしまった場合は、COMMITした後でも元に戻せる可能性があります。
この記事で紹介します。

TRUNCATE文で消してしまった場合は、残念ながらバックアップから戻す必要があります。
またDROP TABLE文で削除したテーブルを元に戻す方法は別の記事で紹介しています。

仕組みの話

OracleのFLASHBACK機能を使用します。
FLASHBACK機能では、UNDO表領域のデータを使用して過去のデータを参照できます。
つまり元に戻すためのデータがUNDO表領域に残っていれば元に戻せるということです。
誤った操作をしてしまったらすぐに対処しましょう。

削除したデータを元に戻す

間違えてDELETE文を実行した日時(時分秒まで)が分かると話が早いです。
元に戻す際は、何時何分何秒のデータにしたいかを指定します。

-- もとに戻したいデータがあるか確認
-- 2022/03/09 10:00:00の箇所はデータが存在したであろう日時を指定してください。
-- WHERE句でテーブル目的のデータを指定してください。
SELECT * FROM <テーブル名> AS OF TIMESTAMP
 TO_TIMESTAMP('2022/03/09 10:00:00','YYYY/MM/DD HH24:MI:SS')
WHERE <条件>;

過去のデータが存在することが確認できたら、FLASHBACK TABLE文でもとに戻します。

-- 元に戻すSQL文(テーブル名は消したテーブル名)
-- 2022/03/09 10:00:00の箇所はデータが存在したであろう日時を指定してください。
FLASHBACK TABLE <テーブル名> TO_TIMESTAMP('2022/03/09 10:00:00','YYYY/MM/DD HH24:MI:SS');
0
2
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
2