ITPub博客

首页 > 数据库 > Oracle > Flashback database必须要有之前的archivelog吗?

Flashback database必须要有之前的archivelog吗?

原创 Oracle 作者:guocun09 时间:2019-01-19 15:33:03 0 删除 编辑

有人问开启了DB级别的flashback( alter database flashback on )后,因为误操作想还原DB到之前的某个正常的时间点,这个时间点前的flashback log存在但 archivelog不存在了 能否成功flashback database 呢?

比如:flashback log从1月1号开始有保留,1月3号误操作想flashback db到1月2号状态,但1月1号后archivelog删除了。这样能flashback database回1月2号状态吗?

我认为是不行的。

具体讨论 http://www.itpub.net/thread-2107912-1-1.html


先看看flashback database的概率机制:

https://docs.oracle.com/cd/E11882_01/backup.112/e10642/flashdb.htm#BRADV582

官方文档有说:

To enable Flashback Database, you configure a fast recovery area and set a flashback retention target . This retention target specifies how far back you can rewind a database with Flashback Database.

From that time onwards, at regular intervals, the database copies images of each altered block in every data file into the flashback logs. These block images can later be reused to reconstruct the data file contents for any moment at which logs were captured.

大概意思是当启用flashback database后,每隔一段时间copy变化block的前镜像写入flashback log。

注:为什么是说每隔一段时间呢?

我想是 因为 如果每一次block的变化都写入flashback log话这样log文件会非常大,而Oracle采用了 隔一段 使用RVWR进程写一次。

很可惜在官方文件中没找到明确的解释,不过在论坛( https://www.cnblogs.com/gaojian/p/flashback.html

以及官方(ID 454768.1)中看可以到一些类似的说法

Can you use flashback database if a period of noarchivelog exists (文档 ID 454768.1)

In this Document


Goal

Solution

Applies to:

Oracle Database - Enterprise Edition - Version 10.2.0.4 and later
Information in this document applies to any platform.
***Checked for relevance on 02-Mar-2012***


Goal

Question: Can we FLASHBACK a DATABASE after switching from Archivelog to Noarchivelog and back to archivelog?



Solution

Answer: This cannot be done. To use "FLASHBACK DATABASE", database must be in ARCHIVE LOG mode.

This is, because after doing the FLASHBACK DATABASE, we must have the REDO LOGS to roll forward the "flash backed" database to a consistent state, hence Archive logs are required!

 

这里和我的想法不谋而合,我们可以推论:

RVWR(Flashback Writer) process定时将变化block的前镜像写入flashback log。在flashback database恢复到某个时间点时先使用flashback log回滚到block变化前最近的前镜像状态,再使用arhive redo log前滚恢复数据库到指定时间一致的状态。所以archive log一定是需要保留的。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25583515/viewspace-2564198/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论
DBA,掌握Oracle,SQLServer,MySQL,hadoop,casscandra等数据库。喜爱深入研究数据库技术原理,擅长管理和优化工作。

注册时间:2011-10-02

  • 博文量
    131
  • 访问量
    484825