oracle闪回数据查询(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闪回数据查询(Oracle备份恢复之Flashback--闪回事务查询)(1)

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闪回数据查询(Oracle备份恢复之Flashback--闪回事务查询)(2)

查看视图,每个事务都对应相同的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闪回数据查询(Oracle备份恢复之Flashback--闪回事务查询)(3)

删除数据:

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

oracle闪回数据查询(Oracle备份恢复之Flashback--闪回事务查询)(4)

再次查看视图,每个事务都对应相同的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闪回数据查询(Oracle备份恢复之Flashback--闪回事务查询)(5)


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

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

oracle闪回数据查询(Oracle备份恢复之Flashback--闪回事务查询)(6)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页