[Oracle维护工程师手记系列]为什么flashback 的时候既需要 flashback log ,又需要 archive log?

Posted 健哥的数据花园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Oracle维护工程师手记系列]为什么flashback 的时候既需要 flashback log ,又需要 archive log?相关的知识,希望对你有一定的参考价值。

为什么flashback 的时候既需要 flashback log ,又需要 archive log 呢?

如果数据库的活动不是很频繁,可以看到,其flashback log 是比较小的。那么是通过怎样的方式 flashback 到过去的呢?

示意如下:

12:50 第一次更改数据(100-->200)

       1:00 进行 第一次 flashback log 写入。 记录内容是 更改前的数据:100

1:10 第二次更改数据(200-->300)

        1:30 再进行下一次flashback log 写入。 记录内容是 更改前的数据:200

1:45 第三次更改数据(300-->400)

        2:00 再进行下一次flashback log 写入。 记录内容是 更改前的数据:300

2:20 第四次更改数据(400-->500)

        2:30 再进行下一次flashback log 写入。 记录内容是 更改前的数据:400

2:40 第五次更改数据(500-->600)

       3:00 再进行下一次flashback log 写入。 记录内容是 更改前的数据:500

 

如果想要 flashback   到 1:15 时刻,

数据库需要先找到最靠近这个时间点的之前的 flashback log 的时刻。

也就是 1:00 是的 flashback 的内容,用这个内容覆当前的数据,然后再吧 1:00 到 1:15 的 archive log 的内容 apply 此数据上。

 

上面举的例子是一个数据块的变更,数据库运行中有多个数据块被在不同时刻修改。所以真实的 flashback 是这样的一个过程:

 比如现在是 3:10分,想要回到1:15 时刻,那么要经过如下的过程:

先利用 3:00 的 flashback ,用其中的更改前的数据, 回到3:00 的时刻的状态。

再利用 2:30 的 flashback ,用其中的更改前的数据, 回到2:30 的时刻的状态。

再利用 2:00 的 flashback ,用其中的更改前的数据, 回到2:00 的时刻的状态。

再利用 1:30 的 flashback ,用其中的更改前的数据, 回到1:30 的时刻的状态。

再利用 1:00 的 flashback ,用其中的更改前的数据, 回到1:00 的时刻的状态。

然后,再利用 1:00 到 1:15 的archive log 内容,apply后达到 1:15 时刻的状态。

以上是关于[Oracle维护工程师手记系列]为什么flashback 的时候既需要 flashback log ,又需要 archive log?的主要内容,如果未能解决你的问题,请参考以下文章

[Oracle维护工程师手记系列]Data Guard Broker中改属性是否需要两侧分别执行?

Linux系统Oracle12.2 RAC集群实施维护_Oracle数据库12cR2(项目实战之五)

cc2650-cc2640蓝牙开发准备手记

工程师手记 | 数据科学专题第三篇:Pentaho数据集成(PDI)与Python和模型管理

AeroSpike踩坑手记1:Architecture of a Real Time Operational DBMS论文导读

SQL用SSMS连接Oracle手记