闪回:修复逻辑错误,从当前的点往回退
1.闪回有专门的闪回日志,存放在FIA中,但是只有闪回数据库会用到
2.如果做全数据库的闪回,相当于一次不完全恢复
基于时间点的闪回
SQL> flashback table t_wh_prodlib to timestamp to_timestamp(‘2015-03-03 12:10:07‘, ‘yyyy-mm-dd hh24:mi:ss‘);
将数据库闪回到20150303 12:10:07
如果基于时间点的闪回报错
ERROR at line 1:
ORA-08180: no snapshot found based on specified time
则使用基于时间段的闪回
SQL> flashback table t_wh_prodlib to timestamp systimestamp - interval ‘27‘ minute;
将数据库闪回到27分钟之前
上面两个无论哪个报错ERROR at line 1:
ORA-08189: cannot flashback the table because row movement is not enabled
则输入以下指令
SQL> alter table t_wh_prodlib enable row movement;
然后在执行上面的闪回语句
====================
其他:
1、闪回删除 delete
在10g之后,除了超级用户删除的时候先放到回收站recyle-bin,同时还将名字改成bin$开头
删除一张表格之后再去查询表格,就会看到以BIN$开头的文件
> show recyclebin;
查看回收站里面的内容
> flashback table dodo before drop;
闪回那张表
<1如果回收站里面有两个相同的时候,会优先闪回后删除的
<2如果闪回之前已经有一个同名的,则需要进行重命名
<3如果删除的时候不想进入回收站,则可以加入参数truge
> purge user_recyclebin; 删除回收站里用户
2、闪回查询 query
闪回查询是从undo里面扣出来的
> select * from t as of timestap to_char(‘2015-03-03 12:10:07‘,‘yyyy-mm-dd hh24:mi:ss‘);
3、闪回表 table
是从undo里面扣出来的,这个SYS用户无法使用
需要开启行移动,闪回表到之间某个时间点需要
> alter table t enable row movement;
> flashback table t to timestap to_char(‘2015-03-03 12:10:07‘,‘yyyy-mm-dd hh24:mi:ss‘);
4、闪回数据库 DB
注意:需要开启这个功能,然后必须是在归档模式,还需要用到闪回日志
如果是第一次设置区域闪回设置,必须先设置大小,再设置时间,必须是在mount状态下去做
> show parameter recovery 查看大小位置
> show parameter target 查看闪回时间
> select FLASHBACK_ON FROM v$database
这个时候在flash下面的SID下面有个 建议FRA里面就只留下这个
!!闪回的时候需要在mount下去操作
> flashback database to timestap to_char(‘2015-03-03 12:10:07‘,‘yyyy-mm-dd hh24:mi:ss‘);