Oracle如何开启闪回

Oracle在9i版本的时候引入了闪回技术,在Oracle 10g已经全面提供了闪回功能,主要提供了快速简单恢复数据库误操作的数据的恢复方法,而不用从逻辑备份或物理备份中恢复过来。

主要的闪回技术(Flashback)支持以下几种恢复级别:

事务闪回:对表进行了insert, update, delete 操作,已经commit 了,发现弄错了,需要恢复到某个commit操作之前的数据,则需要撤销刚才的某个操作。

行级闪回:对表进行了insert, update, delete 操作,需要恢复到某个时间点。

表级闪回:错误的drop table操作,需要表和表中的数据。

数据库级闪回:错误地对整个数据库导入很多表数据,需要将整个数据库恢复到过去的时间点。

闪回查询:闪回查询主要是根据Undo表空间数据进行多版本查询,允许用户查询过去某个时间点的数据,用以重构由于意外删除或更改的数据,数据不会变化。


oracle闪回功能的前提是在开启了归档日志,而且设置了合理的闪回区拥有存储相关执行操作,最后数据库要开启闪回功能,步骤如下:

1、开启归档日志,这个步骤就不一一再细说了,自行查询相关操作,主要是在

mount状态:alter database archivelog;

2、设置闪回区:

--指定闪回恢复区的位置
alter system set db_recovery_file_dest='C:\app\Administrator\flash_recovery_area' scope=both;
--指定闪回恢复区的可用空间大小

alter system set db_recovery_file_dest_size=4G scope=both;

--指定数据库可以回退的时间,单位为分钟,默认是一天时间,实际取决于闪回区大小
alter system set db_flashback_retention_target=4320 scope=both;

Oracle如何开启闪回功能

3、在mount状态下,开启Flashback,如下:

alter database flashback on;

Oracle如何开启闪回功能


例子:简单利用闪回查询恢复刚刚误删除的学生信息表(STUINFO)中的学生张三(学号:SC201801001)。模拟步骤如下:

1、删除学生张三 :

delete from student.stuinfo t where t.stuname='张三';
commit;

2、通过查询stuinfo执行删除之前的时间点的记录,如下:

select * from student.stuinfo as of timestamp sysdate-10/1440;

Oracle如何开启闪回功能