oracle 回闪技术恢复误删数据

 在oralce中,我们有时误删了某些数据或者删除了某些表;这时我们需要恢复这些数据。

 

第一,delete数据后恢复

 

delete某些数据后,可以使用下面语句找到,这个主要是使用Oracle的快照功能。查询到当前时间的前100minute的数据。

 

Sql代码 
select *   
  from skiller AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '100' MINUTE) 
select *
  from skiller AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '100' MINUTE) 这个时间由不同情况来定义。

也可以定义为秒、时等等

 

可以使用下面语句来查看哪些数据是在这个时间段内的区别。

Sql代码 
select *   
  from skiller AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '100' MINUTE)   
 where skill_id not in (select skill_id from skiller) 
select *
  from skiller AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '100' MINUTE)
 where skill_id not in (select skill_id from skiller)        具体怎么区别改前后的数据,请根据实际情况
 删选出了这些数据,我们就可以将这些数据插入到我们现有表中,示例见下面SQL

 

 

Sql代码 
insert into skiller select *   
  from skiller AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '100' MINUTE)   
 where skill_id not in (select skill_id from skiller) 
insert into skiller select *
  from skiller AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '100' MINUTE)
 where skill_id not in (select skill_id from skiller)
 
第二,Drop数据后恢复

 

当我们drop一个表后,我们可以在我们的用户回收站内看到这些数据。比如:

 

Sql代码 
select * from user_recyclebin; 
select * from user_recyclebin; 在这个结果集中我们可以看到我们删除对象的结果集。

这个只是查看,你可以从中找到你drop的表名以及其他信息。

 

找到你要恢复的对象名,比如表名。

 

使用下面语句就可以恢复你的对象了。

 

 

Sql代码 
flashback table table_name to before drop;  
flashback table table_name to before drop;     


  
 

 

posted @ 2012-11-05 13:57  卡卡。冰  阅读(402)  评论(0)    收藏  举报