闪回操作的学习

初始参数

undo_management=auto  ;    undo_retention控制保留撤销端的所需时间长度,已秒为单位(请注意这个设置的太大会增加回滚表空间的大小,造成磁盘空间的负荷)

1、闪回查询

SQL>  SELECT *    FROM KF_GY_XUHAO AS OF TIMESTAMP TO_TIMESTAMP('2010-04-16 16:30:00', 'YYYY-MM-DD HH24:MI:SS');

将查询的结果插入原表中,这种方式的话,条件越精确,得到恢复的结果插入也少

例如可以使用:insert  into KF_GY_XUHAO SELECT *    FROM KF_GY_XUHAO AS OF TIMESTAMP TO_TIMESTAMP('2010-04-16 16:30:00', 'YYYY-MM-DD HH24:MI:SS');进行插入数据

同时也可以使用SCN来恢复,通过

select    dbms_flashback.get_system_change_number  as scn  from dual;

可以得到Scn然后使用闪回查询  select * from KF_GY_XUHAO as of scn 15421 ; 

此时的scn号要比查询出来的小,可以通过统计数据的个数来确定SCN

2、闪回表

使用闪回表(flasback table)可以消除不必要的克隆操作

这种技术需要实现是改变表,启用表的行移动功能

alter  table  KF_GY_XUHAO enble row movement ;

flash tble KF_GY_XUHAO AS OF TIMESTAMP TO_TIMESTAMP('2010-04-16 16:30:00', 'YYYY-MM-DD HH24:MI:SS');

或者 flash table  KF_GY_XUHAO as of scn 15421 ;

如果没有启动行移动功能,使用闪回表会报错;

 

闪回表-行移动.jpg

请使用浏览器的分享功能分享到微信等