[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 时刻的状态。

原文地址:https://www.cnblogs.com/gaojian/p/flashback.html

时间: 2024-10-19 06:28:31

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

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

Data Guard Broker中改属性是否需要两侧分别执行? Data Guard Broker有一些属性,可以通过 show configuration 看到.我有时会想,这些个属性,是否是分别属于primary 和 standby,如果想要修改,是否需要分别登陆到primary 和 standby ,来分别修改呢? 这也是很多客户经常有的疑问.故此我进行了如下的实验. 先看看primary 端的 属性值: -bash-4.1$ dgmgrl /DGMGRL for Linux: Vers

Oracle维护常用SQL语句

数据库人员手边系列:Oracle维护常用SQL语句 1.查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files d where t.tablespace_name = d.tablespace_name group by t.tablespace_name; 2.查看表空间物理文件的名称及大小 select tables

【课程分享】Oracle数据库系统工程师

对这个课程有兴趣的朋友可以加我的QQ2059055336和我联系 一.本课程是怎么样的一门课程 1.1.课程的背景 该课程是Oracle数据库系统工程师培训课程 Oracle Database,又名Oracle RDBMS,或简称Oracle.是甲骨文公司的一款关系数据库管理系统.到目前仍在数据库市场上占有主要份额. ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一

Oracle 维护 online redo log

维护在线redo log  Oracle Database - Enterprise Edition - Version 11.2.0.4 to 11.2.0.4       1. 首先查看当前redo log的大小:              [[email protected] ~]$ sqlplus / as sysdba Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production    SQL>

oracle维护工作的四个要点

oracle数据库运行结果符合设计目标后,数据库就可以真正投入运行了.数据库投入运行标志着开发任务的基本完成和oracle维护工作的开始,但并不意味着设计过程的终结.由于应用环境在不断发生变化,数据库运行过程当中物理存储会不断变化,对数据库设计进行评价.调整和修改等维护工作是一个长期任务,是设计工作的继续和提高.在oracle数据库运行阶段,对数据库经常性的维护工作主要由DBA完成,它包括:1.数据库的转储和恢复.定期对数据库和日志文件进行备份,以保证一旦发生故障,能利用数据库备份及日志文件备份

Oracle SQL性能优化系列

1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在SQL句级或是会话(session)级对其进行覆盖. 为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须经常运行an

Oracle 10g DataGuard手记之基础配置

DataGuard为企业数据的高可用性,数据安全以及灾难恢复提供支持,一般由一个primary db与几个物理或逻辑standby db组成一个DataGuard配置. 系统环境 操作系统为windows server 2003 r2 enterprise x64 edition service pack 2,database为oracle 10g 10.2.0.4 enterprise x64 edition.服务器均为AMD64架构,主机RAID5本地硬盘加RAID1光纤盘阵. primar

ORACLE DATAGURARD配置手记

经过多次实践,参阅网上N多文章……最后还是配不成,可能本人悟性太低,无法体会高手的笔记.最终还是在前辈的帮助下完成.特用最平实的手法记录下来,以便如吾辈菜鸟能 看得懂. 运行Data Guard的条件 1. 在主库和从库的所有机器上必须安装同一个版本的Oracle企业版. 2. 主库必须运行在归档模式下. 3. 主库和从库的操作系统必须一样(允许版本不同),从库可以使用与主库不同的目录结构. 4. 主从库硬件系统的体系结构必须相同.比如:主库运行在64位的Sun Sparc系统上,如果从库是32

oracle数据库工程师的几个发展方向

从事数据库相关工作已经十几年了,是因为自己内心的执着,一直执着于从事的oracle数据库的相关工作.我是从erp起步的,从技术难度上来说erp的开发不是特别难,数据库的数据量也不是很大,可以作为刚步职场的一个过渡阶段.如果从事erp开发,核心要掌握的就是存储过程的编写,因为大部分公司写后台都是用的存储过程,同时做erp开发的话如果感兴趣的话可以多学习些数据库设计发面的内容,比如表的设计,表与表关系的设计,可以画e-r图,也可以画系统流程图来梳理系统业务.目前感觉大的erp公司对开发者需求不多,比