flashback version query和 flashback transaction query簡單應用

jiangkch發表於2014-03-19
使用Flashback Version Query  返回在指定時間間隔或SCN間隔內的所有版本,一次commit命令就會建立一個版本。
SQL> create table t (a number,b number);
Table created.
SQL> insert into t values(1,1);
1 row created.
SQL> commit;
Commit complete.
SQL> insert into t values(2,2);
1 row created.
SQL> commit;
Commit complete.

SQL> select versions_starttime,versions_xid,  versions_operation, a from t versions between timestamp minvalue and maxvalue   ; ---執行t表上執行過的所有版本查詢


VERSIONS_STARTTIME   VERSIONS_XID     VERSIOS-operation          A

19-MAR-14 09.22.33 PM 05000500C2000000 I          2
19-MAR-14 09.22.15 PM 03000800C2000000 I          1

Flashback Transaction Query實際上是查詢的資料字典flashback_transaction_query。可以根據flashback_transaction_query 的undo_sql列值返回資料以前版本。

SQL> SELECT /*+ rule */ UNDO_SQL FROM FLASHBACK_TRANSACTION_QUERY  WHERE XID = '03000800C2000000';  --根據事務ID獲取恢復資料的方法


UNDO_SQL
--------------------------------------------------------------------------------
delete from "SYS"."T" where ROWID = 'AAACmiAABAAAHOSAAA';

SQL> delete from "SYS"."T" where ROWID = 'AAACmiAABAAAHOSAAA';

1 row deleted.

SQL> commit;

Commit complete.

SQL> select * from t;--------資料恢復完成

         A          B
---------- ----------
         2          2

小結:

    通過version query和transcation query,可以對資料進行有針對行的事務級別的資料恢復。

jiangkch

20140319
--------------------------------------------


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/393784/viewspace-1125324/,如需轉載,請註明出處,否則將追究法律責任。

相關文章