一、恢复Drop删除的表
flashback table TB_E_WEAR to before drop
二、恢复delete删除的数据
1.Flashback Query
基于回滚段的闪回查询(Flashback Query)功能
--闪回到某个时间点
select * from T_CO_AREA as of timestamp to_timestamp (''2015-01-08 16:18:57'', ''YYYY-MM-DD HH24:MI:SS'') where ...
2.Flashback Table
Flashback Table不等于Flashback Query,FlashbackQuery仅仅是查询以前的一个快照点而已,并不改变当前表的状态,而Flashback Table将改变当前表及附属对象一起回到以前的时间点
注意:如果需要闪回一个表,需要以下条件:·需要有flashback any table的系统权限或者是该表的flashback对象权限;
·需要有该表的select,insert,delete,alter权限;
必须保证该表row movement。
比如:恢复线别信息表中2015-01-06 17:00:00前删除的数据
- alter table t_co_area enable row movement;
- Flashback table t_co_area to timestamp to_timestamp('2015-01-06 17:00:00','yyyy-mm-dd hh24:mi:ss');//恢复到特定时间
- Flashback table t_co_area to timestamp systimestamp - interval '30' minute;//恢复到30分钟前
3.Flashback Drop
Oracle Flashback Drop特性提供一个类似回收站的功能,用来恢复不小心被删除的表。当删除表时,Oracle 10g并不立刻释放被删除的表所占用的空间,而是将这个被删除的表进行自动重命名(为了避免同类对象名称的重复)并放进回收站中。所谓的回收站类似于Windows系统中的回收站,是一个虚拟的容器,用于存放所有被删除的对象,在回收站中被删除的对象将占用创建时的同样的空间。如果这个被删除的表需要进行恢复,就可利用Flashback Drop功能。
例:进行一个删除表后恢复的简单测试。
(1)显示回收站信息
SQL>show recyclebin;
可以看到,回收站中是没有任何结果的,表示没有任何表在回收站中。
(2)创建一个表,并删除,再次显示回收站信息
SQL>create table test_drop(name varchar2(10));
SQL>drop table test_drop;
SQL>drop table test_drop purge;--删除一个表且不放到回收站中不能进行恢复,在drop语句中可以利用purge选项。
SQL>show recyclebin;
(3)对被删除的表进行恢复SQL>flashback table test_drop to before drop;
4.Flashback Version Query
例如:在test表中,时间1插入一条记录,时间2删除了这条记录,对于时间3执行select * from test当然查询不到这条记录,只能看到该表最后的提交记录。这时如果利用Flash Table或者是Flash Query,只能看到过去的某一时间点的一个快照,而利Flashback Version Query,能够把时间1、时间2的操作给记录下来,并详细的查询出对表进行的任何操作。
select versions_starttime,
versions_endtime,
versions_xid,
versions_operation
from t_co_area versions between timestamp minvalue and maxvalue
在上述查询中,列 versions_starttime、versions_endtime、versions_xid、versions_operation是伪列,还有一些伪列,如versions_startscn和versions_endscn显示了该时刻的系统更改号。列versions_xid显示了更改该行的事务标识符
5.Flashback Transaction Query
Oracle Flashback Transaction Query特性确保检查数据库的任何改变在一个事务级别,可以利用此功能进行诊断问题、性能分析和审计事务。它其实是Flashback Version Query查询的一个扩充,Flashback Version Query说明了可以审计一段时间内表的所有改变,但是也仅仅是能发现问题,对于错误的事务,没有好的处理办法。而Flashback Transaction Query提供了从FLASHBACK_TRANSACTION_QUERY视图中获得事务的历史以及Undo_sql(回滚事务对应的sql语句),也就是说审计一个事务到底做了什么,甚至可以回滚一个已经提交的事务。
SQL>select * from FLASHBACK_TRANSACTION_QUERY
--查询
CREATE TABLE 表名 AS SELECT语句--把查询的结果根据结果集中的表结构和数据形成一张新表。
如果只复制表结构,只需使查询的条件不成立(比如where 1=2),就不会查询从出任何数据,从而复制一个表结构。