oracle执行delete,数据恢复

    

   经常不小心执行delete删除语句,如何恢复数据,表查询闪回机制;所有操作必须以sys用户身份;

  select * from sys.smon_scn_time t order by t.time_dp desc; 

       --scn 与时间的对应关系 ,每隔5分钟,系统产生一次系统时间标记与scn的匹配并存入sys.smon_scn_time表。 

   1, 获得当前时间点的scn:

       select dbms_flashback.get_system_change_number from dual;

   

  2,首先,确定删除数据的时间,查询出对应的scn号;

   select m.*  from (

     select to_char(t.time_mp/( 60 * 60 * 24)+TO_DATE('1970-01-01 08:00:00', 'YYYY-MM-DD HH:MI:SS'), 'YYYY-MM-DD HH:MI:SS' )  sd , t.scn  

    from sys.smon_scn_time t  order by t.time_dp desc  

    )  m  

    where m.sd  like  '%2015-07-04 09:40%'

    上面语句查询出  2015-07-04 09:40  时间点对应的scn的号;

 3,  恢复数据:

       insert into scott.test_wt select * from test_wt as of scn 12744670;

       test_wt为scott用户下的表名;恢复成功

    

 

   

猜你喜欢

转载自wt5216.iteye.com/blog/2224216