oracle闪回

《一》开启数据库闪回

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、闪回事务查询

你可能感兴趣的:(oracle)