Oracle 闪回技术恢复被删除的数据

在平时的工作中难免会遇见一些误操作的情况,特别是一些比较重要的数据,例如生产上面的数据,那么oracle 闪回 将带你走出烦恼。

一、查询误删数据:

方式1:通过scn查询误删数据

获取系统版本的scn

select dbms_flashback.get_system_change_number from dual;

找到系统对应的scn闪回:

select * from 表1 as of scn 1136165;

方式2:通过时间查询误删数据

SELECT  *  FROM  表1  AS  OF  TIMESTAMP TO_TIMESTAMP(  误删以前的时间  );

eg:

SELECT * FROM employees

AS OF TIMESTAMP TO_TIMESTAMP('2004-04-04 09:30:00', 'YYYY-MM-DD  HH24:MI:SS') 

WHERE last_name = 'Chung';

二、闪回数据:

语法:flashback table 表1 to {[before drop [rename to new_table_name]] | [SCN | TIMESTAMP] expr [enable | desable] triggers}

  (1)、通过时间闪回:flashback    table    evaluation_result   to  timestamp   TO_TIMESTAMP('2015-09-17 14:00:00', 'yyyy-mm-dd HH24:MI:SS')

上述报ORA-08186: 指定的时间戳无效 的错误使用 该条sql闪回:  flashback table evaluation_result to timestamp (systimestamp-interval '20' minute);--最后通过这个解决 

上述报ORA-08189: 因为未启用行移动功能, 不能闪回表 解决方法:alter table evaluation_result enable row movement;

   (2)、通过系统scn闪回

 获取系统版本的scn

  select dbms_flashback.get_system_change_number from dual;

  flashback table 表1to scn 1045621;(注:此数字要小于上面语句获得的scn特别是数据库被频繁操作时)

还可以将时间戳转换到scn

select timestamp_to_scn(to_timestamp('2013-01-26 15:58:30','yyyy-mm-dd hh24:mi:ss')) from dual;

(3)、表被删除的闪回:

flashback table 表1  to before drop;--能够闪回表及表中数据

三、数据库闪回:

数据库闪回

 数据库闪回可以使数据库回到过去某一时间点或SCN的状态,用户可以不用备份就能快速地实现时间点的恢复。只有Oracle的企业版才能进行数据库闪回。注,这种闪回存在风险建议少用

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