ADBでもFlashback機能が使用できます。
※ADBで使用可能/不可 のFlashback機能についてはこちら
今回は、ADBでFlashback Queryを試します。
Flashback Query(SELECT AS OF)とは | 主な使用例 |
---|---|
過去のある時点で存在していたデータを取得 | ・失われたデータのリカバリ ・誤ったコミット済みの変更の取り消し ・現在と過去の特定時点のデータを比較など |
テストデータ
事前に次のようなテスト・データを用意しています(例:SCOTTユーザーのEMP表)
select * from emp;
EMPNO EMPNAME
---------- ----------
100 TANAKA
200 SAITO
300 YOSHIDA
テスト・データを変更
EMP表
のEMPNO 300
データ「YOSHIDA」を「ASAKURA」に変更します
update emp set empname='ASAKURA' where empno=300;
commit;
select * from emp2;
EMPNO EMPNAME
---------- ----------
100 TANAKA
200 SAITO
300 ASAKURA ★
過去のデータの確認方法
5分前のEMP表のデータを確認してみると、変更前の「YOSHIDA」を確認できます。
select * from emp AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '5' minute) ;
EMPNO EMPNAME
---------- ----------
100 TANAKA
200 SAITO
300 YOSHIDA ★「ASAKURA」ではなく、変更前の「YOSHIDA」です
誤ってコミットした変更済のデータを、別表としてリストア
表名を変えて過去のデータに戻してみます(例:EMP2 としてリストア)
10分前のデータにもどしてみます。
EMP2 を問い合わせると。変更前の「YOSHIDA」を確認できます。
create table emp2 AS
select * from emp AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' minute)
;
SQL> select * from emp2;
EMPNO EMPNAME
---------- ----------
100 TANAKA
200 SAITO
300 YOSHIDA ★変更前のデータ
参考
- 19c:データベース開発ガイド