LoginSignup
1
0

More than 1 year has passed since last update.

[Autonomous Database]Flashback Queryを試す

Posted at

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 ★変更前のデータ

参考

1
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
1
0