龙空技术网

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

波波说运维 433

前言:

目前兄弟们对“oracle闪回表恢复数据”大概比较关注,你们都想要学习一些“oracle闪回表恢复数据”的相关知识。那么小编也在网上汇集了一些关于“oracle闪回表恢复数据””的相关资讯,希望各位老铁们能喜欢,大家快快来了解一下吧!

概述

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 可以区分特定事务发生的所有数据变化。

实例演示:

先开启附加日志

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.

查看视图,每个事务都对应相同的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);

删除数据:

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

再次查看视图,每个事务都对应相同的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);

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

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

标签: #oracle闪回表恢复数据