[Oracle]フラッシュバック SQLの構文事例

Oracle

概要

Oracle にて 特定の日時のデータを取得するSQL

ある時点のデータを取得する

SELECT * FROM hoge 
as of timestamp to_timestamp('2020-9-11 13:14:00' , 'yyyy-mm-dd hh24:mi:ss');

更新履歴をみる

調査したい行は特定できるが,上記のタイムスタンプでいちいち変更履歴を追っかけるのた大変な場合。

SELECT versions_xid, versions_starttime,
versions_operation,T_HOGE.*
FROM T_HOGE
VERSIONS BETWEEN TIMESTAMP
TO_TIMESTAMP('2020-07-28 17:10:00', 'YYYY-MM-DD HH24:MI:SS') AND
TO_TIMESTAMP('2020-07-28 17:15:00', 'YYYY-MM-DD HH24:MI:SS')
where 行を絞り込む条件を記入する;

versions_xid, versions_starttime,versions_operation は予約語です。変更された日時などが表示される。

備考

過去どこまでさかのぼれるか

設定されている保存日数を確認するSQL。単位は秒

show parameter undo_retention

ただし実際に保存されているかどうかは別問題。表を消してパージしている場合など

プロパティ

Oracle 12.2
Oracle 19.3

コメント

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