ITPub博客

首页 > 数据库 > Oracle > flashback version query和 flashback transaction query简单应用

flashback version query和 flashback transaction query简单应用

Oracle 作者:蓦然princes 时间:2015-08-26 14:48:14 0 删除 编辑
使用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/29249734/viewspace-1783143/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-08-03

  • 博文量
    21
  • 访问量
    31048