一、闪回技术
为了使数据库能够从任何逻辑误操作中迅速恢复,oracle退出了闪回技术。采用该技术,可以对行级和事务级的数据变化进行恢复,减少了数据恢复的时间,而且操作简单,通过sql语句就可以实现数据的恢复,大大提高了数据库恢复的效率。闪回技术是数据库恢复技术历史上一次重大的进步,从根本上改变了数据恢复。

Oracle的“回收站”-快闪恢复区_第1张图片
闪回技术包括以下各项:
1)闪回查询(flashback query):查询过去某个时间点或某个SCN(system change number,系统更改号)值时表中的数据信息。
2)闪回版本查询(flashback version query):查询过去某个时间段或某个SCN段内表中数据的变化情况。
3)闪回事务查询(flashback transaction query):查看某个事务或所有事务在过去一段时间对数据进行的修改。
4)闪回数据库(flashback database):将数据库恢复到过去某个时间点或某个SCN值时的状态。
5)闪回删除(flashback drop):将已经删除的表及相关联的对象恢复到删除前的状态,利用回收站进行工作
Oracle的“回收站”-快闪恢复区_第2张图片
6)闪回表(flashback table):将表恢复到过去的某个时间点或某个SCN值时的状态。
##SCN:当Oracle数据库更新时,由DBMS自动维护而积累递增的一个数字。每一个SCN标识这一个数据库的状态。

具体的闪回技术表:
Oracle的“回收站”-快闪恢复区_第3张图片

二、闪回恢复区
Oracle使用闪回恢复区作为存放备份和恢复相关文件的默认位置。本质上相当于将所有的数据copy一份存储起来。但是他的存储会根据时间点和SCN进行标识,所有可以做到秒级的闪回整个数据库的数据。

闪回区主要存放的文件:
1)控制文件
2)归档日志文件
3)闪回日志
4)控制文件和SPFILE自动备份
5)RMAN的备份
6)数据文件的备份

闪回区大小的设置和管理
1)db_recovery_life_dest:指定闪回区的位置
2)db_recovery_file_dest_size:指定闪回区的空间
3)db_flashback_retention_target:控制闪回日志中数据保留的时间

三、操作
建立闪回区
shutdown immediate; :关闭数据库
startup mount; :mount数据库
alter database archivelog; :开启归档模式
alter database flashback on; :开启闪回日志,关闭 时将该命令的on改为 off即可

alter database open; :open数据库

alter system set db_recovery_life_dest=’/opt/oracle/flashrecovery
area’ scope=both;
alter system set db_recovery_life_dest_size=100G scope=both;
:建立Oracle闪回区, 指定大小为100G

alter system set db_flashback_retention_target=1440;
:设置数据保留的时间, 单位为s;这里1440s 也就是1天

使用SCN闪回数据库
shutdown immediate;
startup mount; :闪回操作都需要数据 库在mount状态下进行 操作(后面省略)
flashback database to scn 782541;
按照时间闪回数据库
alter session set uls_data_format=’YYYY-MM-DD HH24:MI:SS’;
flashback database to timestamp (to_timestamp(‘2018-06-09 14-42-12),
’YYYY-MM-DD HH24:MI:SS’));

闪回表
flashback table t_name to timestamp/SCN [enable/disable triggers];
注释[enable/disable triggers]:是可选项,是否激活触发器

闪回删除
flashback table t_name to before drop [rename to t_name];
注释[rename to t_name]:可进行更名
##drop table t_name purge; :删除后不放入回收站

闪回查询
select * from t_name as of [scn/timestamp] where ...
:根据SCN状态或者时 间状态查询