为什么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?的更多相关文章

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

    Data Guard Broker中改属性是否需要两侧分别执行? Data Guard Broker有一些属性,可以通过 show configuration 看到.我有时会想,这些个属性,是否是分别 ...

  2. [Oracle维护工程师手记]一次升级后运行变慢的分析

    客户报告,当他从 Oracle 11.1.0.7 ,迁移到云环境,并且升级到12.1.0.2.运行客户的应用程序测试,发现比以前更慢了. 从AWR report 的"Top 10 Foreg ...

  3. [Oracle维护工程师手记]两表结合的MVIEW的告诉刷新

    对两表结合查询建立MVIEW,进行MVIEW的的高速刷新失败,如何处理? 例如: SQL> drop user u1 cascade; User dropped. SQL> grant d ...

  4. [Oracle运维工程师手记] 如何从trace 文件,判断是否执行了并行

    [Oracle运维工程师手记系列]如何从trace 文件,判断是否执行了并行 客户说,明明指定了并行的hint,OEM 却报说没有并行,并且提供了画面. 客户的SQL文长这样: INSERT/*+ p ...

  5. Oracle维护:每天的工作

    Oracle维护:每天的工作 检查数据库状态 确认所有的INSTANCE状态以及listener状态正常,登陆到所有数据库或例程,检测ORACLE后台进程: $ ps –ef|grep ora $ l ...

  6. ORACLE DATAGURARD配置手记

    经过多次实践,参阅网上N多文章……最后还是配不成,可能本人悟性太低,无法体会高手的笔记.最终还是在前辈的帮助下完成.特用最平实的手法记录下来,以便如吾辈菜鸟能 看得懂. 运行Data Guard的条件 ...

  7. Oracle 10g DataGuard手记之基础配置

    DataGuard为企业数据的高可用性,数据安全以及灾难恢复提供支持,一般由一个primary db与几个物理或逻辑standby db组成一个DataGuard配置. 系统环境 操作系统为windo ...

  8. Oracle 11g的Redo Log和Archive Log的分析方法

    自Oracle 11g起,无需设置UTL_FILE_DIR就可以使用LOGMNR对本地数据库的日志进行分析,以下是使用LOGMNR的DICT_FROM_ONLINE_CATALOG分析REDO和归档日 ...

  9. oracle维护服务 oracle解决方案 oracle售后服务

        为客户提供的oracle 金牌技术服务内容为: 1.电话服务 (7*24)   热线支持电话800-810-0081   每周7天,每天24小时北京技术支持中心每天都有专人值守.以保证及时与客 ...

随机推荐

  1. 如何定制Linux外围文件系统?

    本文由云+社区发表 作者:我是乖宝宝哦 一般来说,我们所说的Linux系统指的是各种基于Linux Kernel和GNU Project的操作系统发行版.为了掌握Linux操作系统的使用,了解 Lin ...

  2. [五] JavaIO之InputStream OutputStream简介 方法列表说明

      InputStream 和 OutputStream 对于字节流的输入和输出 是作为协议的存在 所以有必要了解下这两个类提供出来的基本约定 这两个类是抽象类,而且基本上没什么实现,都是依赖于子类具 ...

  3. sql字符串包含单引号

    ad'min select  * from user where name ='ad''min'

  4. .Net 接入CAS 遇到的坑

    关于CAS是个什么东西,就不多闲扯了,相信每个有过SSO经验的都听过CAS大名,百度百科地址: https://baike.baidu.com/item/CAS/1329561?fr=aladdin ...

  5. C#生成随机数的三种方法

    随机数的定义为:产生的所有数字毫无关系. 在实际应用中很多地方会用到随机数,比如需要生成唯一的订单号. 在C#中获取随机数有三种方法: 一.Random 类 Random类默认的无参构造函数可以根据当 ...

  6. 修改tomcat的端口号

    一.环境 tomcat7.0.notepad++(这个是一个文本编辑器,用记事本也可以) 二.修改方法 端口        第一步:找到tomcat7的conf目录下的 server.xml这个文件, ...

  7. LeetCode 176. 第二高的薪水(MySQL版)

    0.前言 最近刷LeetCode 刷数据库题目 由于数据库课上的是SQL,而MySQL有许多自己的函数的,怕把刚学会的函数忘记 特在此记录! 1.题目 编写一个 SQL 查询,获取 Employee ...

  8. 使用 empApi 组件实现 Change Data Capture 功能

    Change Data Capture 功能是从 Winter '19 版本开始正式启用的功能. 它是基于"发布-订阅"模式设计,可以将 Salesforce 中记录的改变自动推送 ...

  9. 环境设置——pyCharm环境下导入MySQLdb遇到的一系列问题

    本文转自http://blog.sina.com.cn/s/blog_135031dae0102yc8l.html 安装好pyCharm后想要import MySQL,结果发现了一系列问题,像推到了塔 ...

  10. java新知识系列 三

    1:trycatch中需要注意的地方. 2:ServletConfig以及ServletContext对象. 3: Spring事务属性的种类:   传播行为.隔离级别.只读和事务超时. 5:关于程序 ...