Oracle备份恢复之Flashback--闪回事务查询

概述

Oracle11g 闪回事务查询就是对过去某段时间内所完成的事务的查询和撤销,通过闪回事物分析,可以识别在一个特定的时间段内所发生的所有变化,也可以对数据库表进行事物级恢复。 前面提到可以审计一个事务到底做了什么,现在可以获得事务的历史操作进行撤销。


flashback transaction操作过程:

1、查询某段时间内的操作发生情况:

select id,name,versions _operation,versions_xid,versions_starttime from testversions between timestamp minvalue and maxvalue order by id;

2、 根据 XID 对 flashback _transaction_query 进行查询

select table _name,table_owner,undo_sql from flashback_transaction_query wherexid=‘„’

3、运行上面找出的 sql 语句,即可将以前删除的数据恢复回来。

Flashback Transaction Query 也是使用 UNDO 信息来实现。利用这个功能可以查看某个事务执行的所有变化,它需要访问 flashback _transaction_query 视图,这个视图的 XID 列代表事务 ID,利用这个 ID 可以区分特定事务发生的所有数据变化。


实例演示:

先开启附加日志

Oracle备份恢复之Flashback--闪回事务查询

SQL> create table B(id int);
Table created.
SQL> insert into B values(1);
1 row created.
SQL> insert into B values(2);
1 row created.
SQL> insert into B values(3);
1 row created.

Oracle备份恢复之Flashback--闪回事务查询

查看视图,每个事务都对应相同的XID

SQL>select xid,operation,commit_scn,undo_sql from flashback_transaction_query where xid in (Select versions_xid from B versions between scn minvalue and maxvalue);

Oracle备份恢复之Flashback--闪回事务查询

删除数据:

SQL> delete from B where id=3;
1 row deleted.
SQL> commit;
Commit complete.

Oracle备份恢复之Flashback--闪回事务查询

再次查看视图,每个事务都对应相同的XID

SQL>select xid,operation,commit_scn,undo_sql from flashback_transaction_query where xid in (Select versions_xid from scott.B versions between scn minvalue and maxvalue);

Oracle备份恢复之Flashback--闪回事务查询


闪回事务查询可以将同一事务的所有撤销SQL列出,这是闪回查询做不到的,如有必要,管理员还能够执行对应一个事务的部分撤销SQL以一种破坏事务原子性的方式恢复一部分数据,如此行事正确与否完全取决于应用的逻辑。

后面会分享更多flashback方面的内容,感兴趣的朋友可以关注下!

Oracle备份恢复之Flashback--闪回事务查询

相关推荐