Amazon

2015年1月5日月曜日

フラッシュバッククエリのversions betweenで変更の履歴を調べる

UNDO表領域にデータが残っている範囲で、versions between句を使って特定の期間の変更を調べられます。
擬似列名(VERSIONS_*)を使って、変更の時間、操作を確認します。

タイムスタンプを記録してデータを変更します。
SQL> select to_char(systimestamp, 'YYYYMMDD HH24:MI') from dual;

TO_CHAR(SYSTIM
--------------
20150105 13:28

SQL> update emp set sal=100 where job='MANAGER';

3 rows updated.

SQL> commit;

Commit complete.

SQL> 

確認したタイムスタンプからの変更を表示します。
SQL> r
1  select to_char(VERSIONS_STARTTIME, 'YYYYMMDD HH24:MI') as vstart
2        ,to_char(VERSIONS_ENDTIME, 'YYYYMMDD HH24:MI') as vend
3        ,VERSIONS_OPERATION, emp.*
4  from emp versions between timestamp
5      to_timestamp('20150105 13:28', 'YYYYMMDD HH24:MI')
6  and SYSTIMESTAMP
7* where job = 'MANAGER'

VSTART         VEND           V      EMPNO ENAME      JOB              MGR HIREDATE                  SAL       COMM     DEPTNO
-------------- -------------- - ---------- ---------- --------- ---------- ------------------ ---------- ---------- ----------
20150105 13:28                U       7782 CLARK      MANAGER         7839 09-JUN-81                 100                    10
20150105 13:28                U       7698 BLAKE      MANAGER         7839 01-MAY-81                 100                    30
20150105 13:28                U       7566 JONES      MANAGER         7839 02-APR-81                 100                    20
20150105 13:28         7566 JONES      MANAGER         7839 02-APR-81                2975                    20
20150105 13:28         7698 BLAKE      MANAGER         7839 01-MAY-81                2850                    30
20150105 13:28         7782 CLARK      MANAGER         7839 09-JUN-81                  10                    10

6 rows selected.

SQL> 

0 件のコメント: