[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维护工程师手记]Data Guard Broker中改属性是否需要两侧分别执行?
- [Oracle维护工程师手记]一次升级后运行变慢的分析
- [Oracle维护工程师手记]两表结合的MVIEW的告诉刷新
- oracle 更新LOBl类型数据的时候需要使用 事务
- 在原型继承的时候为什么需要对constructor属性就行修正
- 基于LINUX的Oracle 10G RAC管理维护学习手记
- oracle--查询空表也需要4秒,为什么?
- 配置PHP安装环境的时候为什么需要安装PHP?
- 在Oracle维护时需要用到的各种unix操作系统命令
- 为什么 cadence在建pcb封装库的时候,需要建两个元器件标志?
- ORACLE分区表梳理系列(二)- 分区表日常维护及注意事项(红字需要留意)
- 在安装完成oracle的时候,需要su - oracle,但有时候出现ulimit pize...
- 为什么oracle需要三层嵌套来实现分页
- 为什么工程师需要花时间积累
- 在安装ORACLE的时候,需要设置ORACLE HOME Directory,ORACLE BASE Directory,ORACLE INVERTORY directory三个目录,初学者可能会混
- Oracle Rac opatch auto的时候为什么不打到Rac database home上
- 重写equals方法的时候为什么需要重写hashcode
- Oracle Rac opatch auto的时候为什么不打到Rac database home上
- Oracle日常维护时需要用到的各种unix操作系统命令
- 为什么调试的时候需要编译选项中添加 -g. 请自行调研readelf命令