闪回技术(flashback)是从9i版本的闪回查询开始的,在10g的版本得到具体应用;在11g中得到增强
11g中闪回技术的项目 :
闪回数据库技术
使数据库能够迅速回滚到以前的某个时间或某个SCN(系统更改号)上,这对于数据库从逻辑错误中恢复特别有用,而且也是大多数逻辑损害时恢复数据库的最佳选择。该功能不基于撤销数据,而是基于闪回日志
使用闪回数据库恢复比使用传统的恢复方法要快得多,这是因为恢复不再受到数据库大小的影响。也就是说,传统的恢复时间(MTTR)是由所需重建的数据大小和所要应用的归档日志的大小所决定的,而使用闪回数据库恢复,其恢复时间是由恢复过程中需要备份的变化的数量,而不是数据文件和归档日志大小决定。闪回数据库由恢复写入器(RVWR)后台进程和闪回数据库日志组成。
闪回恢复区配置
如:将闪回恢复区的大小设置为4G
alter system set db_recovery_file_dest_size=4g scope=both
注意:如果要停用闪回恢复区,只要将参数db_recovery_file_dest参数值清空即可
闪回数据库配置
要求数据库必须满足以下配置:
1.设置数据库必须运行在归档模式下(archivelog)
2.通过数据库参数db_flashback_retention_target指定可以再多长时间内闪回数据库
3.需要在mount状态下使用alter database flashback on命令启动闪回数据库功能
更改:
connect system/xcn258 as sysdba
shutdown immediate
alter database archivelog;
alter system set db_flashback_retention_target=7200;
alter database flashback on;
alter database on;
闪回数据库技术应用
如:使用闪回数据库达到某个SCN的恢复
首先,查询v$flashback_database_log视图获得oldest_flashback_scn;
本例:1553800
关闭 数据库; shutdown immediate
startup mount;
flashback database to scn 1553800
最后,用resetlogs打开数据库
alter database open resetlogs;
闪回表技术
闪回表,是一种能够恢复或设置表到过去某个特定时间点而不需要进行不完全恢复的闪回技术。使用闪回表时,所有的相关对象都能够得到恢复。闪回表技术是基于撤销数据来实现的,因此,要想闪回表到某个时间点上,必须确保与撤销表空间有关的参数设置合理。与参数undo_management,undo_tablespace,undo_retention设置有关
闪回表参数
--enable triggers:表示触发器恢复以后为enable状态,而默认为disable状态
--to before drop:表示恢复到删除之前
--rename to table:表示更换表名
闪回表应用
首先创建样表,然后进行删除某些行,最后用flashback table命令恢复数据
在scott模式下,创建一个样表dept2
connect scott/tiger
create table dept2 as select * from dept;
set time on
delete from dept2 where deptno=30;(18:58:10)
commit;
alter table dept2 enable row movement;(必须先打开)
falshback table dept2 to timestamp to_timestamp('2016-03-20 18:58:10' ,'yyyy-mm-dd hh24:mi:ss');
闪回丢弃技术
闪回丢弃是将被丢弃的数据库对象及其相关联对象的备份保存在回收站中,以便在必要时能够及时恢复这些对象。在回收站被清空之前,被丢弃的对象并没有从数据库中删除,这就使得数据库能够恢复被意外或误操作而删除的表
回收站是所有丢弃表及其相关联对象的逻辑存储器,当一个表被丢弃时(drop),回收站会将该表及其相关联的对象存储在回收站中。存储在回收站中的相关联对象包括索引、约束、触发器、嵌套表、大的二进制对象LOB段和LOB索引段
Oracle回收站将用户所做的DROP操作记录在一个系统表里,即将被删除的对象写到一个数据字典中,当确认不再需要被删除的对象时,可以使用purge命令对回收站空间进行清除
为了避免同名:在回收站中,被删除的对象名做了转换:bin$globalUID$version globlaUID一个全局唯一、24个字符长对象(与对象未删除前的名称没有关系)
回收站应用
如:给出数据准备、删除表、查看回收站信息、恢复及查询恢复后情况
connect scott/tiger
create table dept_copy as select * from dept;
select * from tab(从DD中查看表信息)
drop table dept_copy;
select object_name,original_name from user_recyclebin;(从回收站查看刚刚删除的表)
flashback table dept_copy to before drop;
闪回版本查询技术
主要依赖AUM(automatic undo management),AUM是指采用撤销表空间记录增、删、改数据的方法
select version query
闪回事务查询技术
闪回事务查询是一种诊断工具,帮助识别数据库发生的事务级变化,可以用于事务审计的数据分析。通过闪回事务分析,可以识别在一个特定的时间段内所发生的所有变化,也可以对数据库表进行事务级恢复
闪回事务查询的基础是依赖于撤销数据,它也是利用初始化参数undo_retentio来确定已经提交的撤销数据在数据库中的保存时间
上面的flashback version query可以实现审计一段时间内表的所有改变,但是这仅仅是发现某个时间段内所做过的操作,对于错误的事务不能进行撤销处理。而flashback transaction query 可实现撤销处理,因为可以从flashback_transaction_query视图中获得事务的历史操作及撤销语句,也就是说,可以审计一个事务到底做了什么,也可以撤销一个已经提交的事务。
闪回数据归档技术
flashback data archive,该技术与上面所说的诸多闪回技术在实现机制上是不同的(除了闪回数据库外,其他闪回技术都是依赖于UNDO撤销数据),它通过将变化的数据存储到创建的闪回归档区中,从而与UNDO区别开来,这样就可以通过闪回归档区单独设置存储策略,使得可以闪回到指定时间之前的旧数据而不影响UNDO策略。并且,可以根据需要指定哪些数据库对象需要保存历史变化数据,而不是将数据库中所有对象的变化数据都保存下来,这样可以极大地减少空间需要
flashback data archive 并不是记录数据库的所有变化,而只是记录了指定表的数据变化。所以flashback data archive是针对对象的保护,是flashback database的有利补充