《一》开启数据库闪回
1、查看归档模式:
a.是否开启归档
archive archive log list;
select LOG_MODE from V$database ;
b、查看归档日志信息
select name from v$archived_log; --(还未产生归档日志时,查不到信息)
show parameter db_recovery;
2、开启归档:
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
3、配置闪回恢复区(flash recovery area 简称FRA)
开启归档后和默认的归档日志路径是一致的
show parameter db_recovery_file ;
4、配置闪回保留时间
show parameter db_flashback_retention_target ;
alter system set db_flashback_retention_target = 2880 ;
5、启动闪回数据库
shutdown immediate;
startup mount;
alter database flashback on ;
alter database open;
select flashback_on from v$database;
6、关闭闪回数据库
一旦关闭数据库闪回,FRA区域里面的闪回日志全部会被清空。
shutdown immediate;
startup mount;
alter database flashback off;
alter database open;
《二》进行闪回
1、闪回数据库
做了一些对数据库比较大的误操作,比如删除用户
shutdown immediate;
startup mount exclusive;
flashback database to timestamp to_date('2017-11-09 00:00:00','yyyy-mm-dd hh24:mi:ss');
alter database open read only;
检查数据是否有问题,没有问题可以重启数据库了。
shutdown immediate ;
startup mount ;
alter database open resetlogs;
扩展
--指定SCN进行恢复
flashback database to scan 34768975
2、闪回删除
select * from dba_recyclebin ;--(回收站)
flashback table t to before drop rename to t_new;
--或者 flashback table "BIN$a+SjvtuyTkOf5ptZFYcSqQ==$0" to before drop rename to t_new;
--清空回收站
purge dba_recyclebin;
purge table t ;
--直接彻底删除
drop table t purge;
3、闪回表
变前的值会保存在undo表空中
--启用数据行的转移特性
alter table t enable row movement ;
flashback table t to timestamp to_date('2017-10-01 00:00:00','yyyy-mm-dd hh24:mi:ss');
--(只要undo表空间中还有数据,就可以一致闪回到相应的时间点)
--(在对表进行了DDL操作的期间,闪回数据是不行的)
4、闪回查询
select * from t as of timestamp to_date('2017-10-01 00:00:00','yyyy-mm-dd hh24:mi:ss');
5、闪回版本查询
6、闪回事务查询