zoukankan      html  css  js  c++  java
  • [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 时刻的状态。

  • 相关阅读:
    ::在c++中的应用
    VS2008工程一些操作
    vs2008添加链接库
    从服务器 (PC 端 ) 发送图片到客户端 (android 手机端 ) [转]
    Android PowerImageView实现,可以播放动画的强大ImageView[转]
    INI文件读写
    关于超链接伪类的使用,:link,:visited,:hover
    关于div的居中显示
    常见公告栏信息效果的实现
    利用ul,li,span,position:relative实现文本的居中显示
  • 原文地址:https://www.cnblogs.com/gaojian/p/flashback.html
Copyright © 2011-2022 走看看