您的位置:首页 > 数据库

浅谈11g数据库flashback 特性

2013-03-14 21:08 281 查看
因为最近看了下oracle11g 方面的题,在做到flashback database方面时,通过阅读官方文档以及上网查看其它网友的分享,对它有了一定的了解,所以写下来供大家参考指正~

(1)Flashback Database

闪回数据库,简单理解就是把数据库闪回到某个以前的时间点,能恢复到的最早的SCN, 取决与FlashbackLog中记录的最早SCN.

Flashback Database 功能非常类似与RMAN的不完全恢复, 它可以把整个数据库回退到过去的某个时点的状态, 这个功能依赖于Flashback log 日志。 比RMAN更快速和高效。 因此Flashback Database 可以看作是不完全恢复的替代技术。

Flashback Database 整个架构包括一个进程Recover Writer(RVWR)后台进程,Flashback Database Log日志 和Flash Recovery Area。一旦数据库启用了Flashback Database, 则RVWR进程会启动,该进程会向Flash Recovery Area中写入Flashback Database Log, 这些日志包括的是数据块的 " 前镜像(before image)", 这也是Flashback Database 技术不完全恢复块的原因。

默认情况数据库的flashback database是关闭,因为启动该功能会给数据库带来一定的负担,所以一般不启用该功能,但是可以在mount exclusive状态下打开。当启用Flashback Database之后,DB会每隔一段时间copy一份datafile中修改的block的镜像到FRA中。如果需要使用FlashbackDatabase进行rewind操作,就会使用这些images文件。当进行闪回时,先恢复到对应的target
time,即之前的某个镜像上,然后根据redo log,重新应用redo log,将数据恢复到指定的闪回的时间点上。

(2)Flashback DataArchive

在Oracle 11g里又出了一个新特性:Oracle Flashback Data Archive. 10g中Flashback 技术是以Undo segment中的内容为基础的, 因此受限于UNDO_RETENTON参数。要使用flashback 的特性,必须启用自动撤销管理表空间。FDA通过将变化数据另外存储到创建的闪回归档区(Flashback Archive)中,以和undo区别开来,这样就可以为闪回归档区单独设置存储策略,使之可以闪回到指定时间之前的旧数据而不影响undo策略。

(3)闪回恢复区(Flashback Recovery Area)

oracle10g中增强了闪回查询的功能,并且提供了将整个数据库回退到过去某个时刻的能力,这是通过引入一种新的flashback log实现的。flashback log有点类似redo log,只不过redo log将数据库往前滚,flashback log则将数据库往后滚。为了保存管理和备份恢复相关的文件,oracle10g提供了一个叫做闪回恢复区(Flashback recovery area),同时在rman备份中支持对该区域的备份,这个区域默认创建在oracle_base目录下。 可以将所有恢复相关的文件,比如flashback log,archive log,backup set等,放到这个区域集中管理。

可以说在11g中flashbackdatabase功能真的实现了只要有足够的flashback area空间就可以做到数据库级别的高速时空穿越。

下面实验说明flashback需要开启归档,

flashbackdatabase可以闪回到过去的某一时刻,但闪回点之后的工作全部丢失

使用resetlogs创建新的场景并打开数据库(一旦resetlogs之后,将不能再flashback至resetlogs之前的时间点)

常用的场景:truncatetable、多表发生意外错误等









内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: