フラッシュバックドロップ
DROPしたテーブルを戻す
∟FLASHBACK TABLE <表名> TO BEFORE DROP;
仕様
・DROPしたテーブルは同じ表領域で論理削除されているので、元に戻す
・索引も元に戻る
・PURGEオプションで DROPしている場合は元に戻すことはできない
・CASCADEオプションをしていてもPURGEしていなければ元に戻すことができる
・DROP処理はUNDO領域は関係ない
フラッシュバッククエリ
ある時点のデータを確認し(変更履歴)、それを元にDMLで元に戻す
∟ SELECT * from <表名>
as of timestamp to_timestamp(systimestamp - interval '1' minute);
ある期間(ex.15分前までの)
∟ SELECT versions_xid, versions_starttime,versions_operation,tiga.*
FROM <表名>
VERSIONS
BETWEEN TIMESTAMP (systimestamp - interval '15' minute ) AND systimestamp;
フラッシュバックテーブル
とある時点までのテーブルのデータに戻す
∟ FLASHBACK TABLE 表名 TO TIMESTAMP to_timestamp('2022-03-22 20:00:00','YYYY-MM-DD HH24:MI:SS');
UNDOの話
フラッシュバッククエリとフラッシュバックテーブルはUNDOデータに依存する。UNDO_RETENTIONはデフォルトで900秒(15分)なので、15分以内ならデータを元に戻せると考えて良い。しかし、それは目安であって確約されたものではない。
UNDO領域がいっぱいになれば、随時、上書きされているからである。
確約させるための設定もあるが、容量がいっぱいになった時にエラーが出るようになる。