一、闪回技术的介绍
闪回技术是为了使Oracle数据库从任何逻辑误操作中迅速地恢复。该技术首先以闪回查询 (Flashback Query)出现在Oracle 9i版本中,后来Oracle在10g中对该技术进行了全面扩展,提供了闪回数据库、闪回删除、闪回表、闪回事物及闪回版本查询等功能,在11g 中,Oracle继续对该技术进行改进和增强,增加了闪回数据归档功能。
二、闪回技术的使用
2.1 闪回数据库
闪回数据库要确保在mount模式下进行闪回,开启闪回需要在归档模式下开启。
·查询是否开启了闪回
·查看是否处于归档模式
·这里需要注意的是,在我们设置闪回区域的时候,需先设置闪回区域大小,不然会报如下错误:
·设置闪回区域大小和闪回区域位置
·设置闪回数据库的数据保留周期(设置为一天,以分钟为单位)
·启用闪回日志
·查询是否成功启用闪回恢复区
·查询是否成功使用闪回数据库:select flashback_on from v$database;
·先查看数据库当前SCN:select current_scn from v$database;
·建一张表,插入一条数据,以作对比:
·开始使用闪回数据库恢复
再查询时,发现已经没有这张表了。
2.2 闪回表
闪回表有个特性就是无法作用于SYS用户的对象
·先新建一个用户
·先建一张新表:
·然后在里面插入三条数据:
·查询当前SCN号(查之前要给用户查询视图的权限):
·更新一行数据:
·查询数据库当前时间:
·删除一行数据:
·在恢复至某一时刻时,需要将表的 ROW MOVEMENT特性开启,否则如下报错:
·开启qqi的ROW MOVEMENT特性:
·将表闪回至删除id=3的记录之前的时间段:
·将表闪回至SCN=975638的状态:
2.3闪回删除
闪回删除的原理类似于Windows中的回收站,在我们将文件(表)删除时,并不会直接删除,而是先将表扔至回收站中,除非是用户想真正给删了或者存储该表的表空间空间不足时,才会真正删除。因此要想使用闪回删除技术,就要先确保回收站的状态是启动的。与闪回表一样,闪回删除不能在SYS用户中使用,此用户下删除表在回收站中是找不到的。
·查询回收站是否启动(默认启动):
若是未启动则可以通过alter system set recyclebin=on deferred;
·删除表qqi:
·在回收站中查询:
·闪回删除:
2.4闪回查询
闪回查询能够根据timestamp和scn来查看数据更改之前的数据。
·查询id=3的用户的信息:
·更新id=3的用户的信息:
·查询一分钟前id=3的用户的信息:
三、闪回技术的限制
1.数据文件损坏或丢失等介质故障不能使用闪回数据库进行恢复。闪回数据库只能基于当前正常运行的数据文件
2.闪回数据库功能启动后,如果发生数据控制文件重建或利用备份恢复控制文件,则不能使用闪回数据库
3.不能使用闪回数据库进行数据文件收缩操作
4.不能使用闪回数据库将数据库恢复到在闪回日志中可获得的最早的SCN之前的SCN,因为闪回日志文件在一定的条件下被删除,而不是始终保存在闪回恢复区中