日期:2014-05-16  浏览次数:20391 次

FlashBack总结之闪回数据库与闪回删除(原创)

闪回数据库的特性

Flashback Database 功能非常类似与RMAN的不完全恢复, 它可以把整个数据库回退到过去的某个时点的状态, 这个功能依赖于Flashback log 日志,而且比RMAN更快速、高效。 因此Flashback Database 可以看作是不完全恢复的替代技术。 但它也有某些限制:
1. Flashback Database 不能解决Media Failure, 这种错误RMAN恢复仍是唯一选择
2. 如果删除了数据文件或者利用Shrink技术缩小数据文件大小,这时不能用Flashback Database技术回退到改变之前的状态,这时候就必须先利用RMAN把删除之前或者缩小之前的文件备份restore 出来, 然后利用Flashback Database 执行剩下的Flashback Datbase。
3. 如果控制文件是从备份中恢复出来的,或者是重建的控制文件,也不能使用Flashback Database。
4. 使用Flashback Database锁能恢复到的最早的SCN, 取决与Flashback Log中记录的最早SCN。

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


[oracle@dg1 ~]$ ps -ef|grep rvw|grep -v grep
oracle??? 2665???? 1? 0 08:53 ???????? 00:00:00 ora_rvwr_orcl

RVWR和LGWR的区别

假设T表C1列默认值为null,并进行了如下操作

时间点

作用的列 T(C1)的 SQL

RVWR

LGWR

09:00:00

Update T set c1=1;

改变前的值 null

改变前的值 null,改变后的值 1

09:10:00

Update T set c1=2;

改变前的值 1

改变前的值 1,改变后的值 2

09:15:00

Update T set c1=3;

改变前的值 2

改变前的值 2,改变后的值