Oracle Flashback技术之Flashback Table

Oracle Flashback家族有四个成员,分别是以下:

Flashback Database  ——闪回数据库

Flashback Drop     ——闪回删除
Flashback Table    ——闪回表

Flashback Query(分Flashback Query,Flashback Version Query,Flashback Transaction Query) ——闪回查询

今天讨论下Flashback Table技术

Flashback Table利用UNDO保留信息恢复

 Oracle Flashback Table特性允许利用Flashback Table语句,确保闪回到表的前一个时间点。与Oracle 9i中的Flashback Query相似,利用回滚段信息来恢复一个或一些表到以前的一个时间点(一个快照)。要注意的是,Flashback Table不等于Flashback QueryFlashback Query仅仅是查询以前的一个快照点而已,并不改变当前表的状态,而Flashback Table将改变当前表及附属对象一起回到以前的时间点。

Flashback Table需要以下条件:

 1、需要有flashback any table的系统权限或者是该表的flashback对象权限;

 2、需要有该表的select,insert,delete,alter权限;

 3、必须保证该表row movement开启;

例:

SQL> select * from test1;(test1原始状态)
     ID NAME
---------- ----------
   3759479 A

SQL> select current_scn from v$database;(查询误操作前的scn号,如果不知道,可以用时间戳来恢复

 current_scn

--------------

243595834995739

SQL> delete from test1;(误操作)

SQL> commit;

SQL> alter table test1 enable row movement;(开启恢复表的行移动

SQL> flashback table to scn 243595834995739;(利用scn号Flashback Table)

SQL> select * from test1;(test1恢复原始状态)
     ID NAME
---------- ----------
   3759479 A

SQL> alter table test1 disable row movement;(关闭恢复表的行移动)

注意:Flashback Table是将表恢复到以前某一个状态,但是在恢复点之后更新的数据会丢失。Flashback Table是利用Undo来恢复,如果Undo被覆盖,将无法使用Flashback Table来进行恢复。


按照timestamp来查询过去时间点的数据:

select count(0) from ymsdev.yms_ppk_item as of timestamp to_timestamp('2015-12-10 20:00:00.350','yyyy-mm-dd hh24:mi:ss.ff')


你可能感兴趣的:(Oracle,DBA)