oracle世界,有3种数据:undo、redo和data。而redo 应"提交事务不丢失"而生的一种机制,服务于两类场景:一是instance recovery、一是media recovery。
instance recovery目的:当数据库发生故障时,确保buffer cache中的数据不好丢失,保证数据库的一致性
media recovery 目的:当数据文件发生故障时,能够恢复数据
redo是按照thread来组织的。于单实例,只有一个THREAD;于RAC,可能存在多个THREAD。
redo log机制是私有的:每个实例都有自己的log buffer。但在rac环境,redo log file是共享的。
无论哪种恢复,第一步都是(数据文件的状态)借用redo数据前滚(undo数据文件亦被前滚)直至最后一个可用的redo log或者归档日志。
再者,oracle的cache机制是以性能为导向,绝非存储用的。为了这个目标,oracle须处理两个问题:
1)如何确保提交的事务不丢失?
2)如何均衡实例恢复的时间?
第一个问题:Log-Force-at-Commit机制
commit时写日志,当返回commit complete时,才写完日志,即使返回到“Commit compl”时,突然断电,日志也没有写完。
第二个问题:checkpoint机制
data由server process读上来,但并不负责写下去,buffer cache写操作由DBWn完成,DBWn根据workload以及是否被其他process使用来将一部分数据写到数据文件,这是具有随机性的。而checkpoint机制便是对这种情况的有效补充。发生检查点时,CKPT进程会要求DBWn将某个scn以前的所有dirty buffer写回数据文件。完成一次检查点,这个scn之前的所有数据变更都已经存盘,如果此时发生故障,则这个事件以前的变更就无需考虑。
分享到:
相关推荐
Oracle DG下修改redo log和standby redo log日志大小.txt
丢失全部数据库文件及全部redolog的恢复方法,可用作RMAN数据库迁移.doc
42 redo log是直接一条一条写入文件的吗?非也,揭秘redo log block.pdf
43 直接强行把redo log写入磁盘?非也,揭秘redo log buffer.pdf
介绍Oracle redo log 恢复步骤的文档,图文并茂
3000帧动画图解MySQL为什么需要binlog、redo log和undo log.doc
Redo log包含所有的数据库变化历史,数据库的所有操作变化,均按照写入重做日志缓冲区先于数据块缓冲区、写入重做日志文件先于写入数据文件;当发生提交动作时,将重做日志缓冲区变化刷到重做日志文件。
文章目录一、MySQL日志文件类型二、几种日志的对比2-1、用途 redo log undo log binlog2-2、存储内容、格式 redo log undo log binlog2-3、日志生成 redo log undo log binlog2-4、删除策略 redo log ...
MySQL数据库之undo log和redo log工作原理.png,这是一份图例,画图表示undo log和redo log的工作原理
2 万字 + 30 张图 | 细聊 MySQL undo log、redo log、binlog 有什么用?.doc
44 redo log buffer中的缓冲日志,到底什么时候可以写入磁盘?l.pdf
行业-43 直接强行把redo log写入磁盘?非也,揭秘redo log buffer.rar
41 在Buffer Pool执行完增删改之后,写入日志文件的redo log长什么样.pdf
行业-42 redo log是直接一条一条写入文件的吗?非也,揭秘redo log block.rar
Delphi 中实现Redo Undo的一个简单实例,包含源码
探索oracle redolog内部结构
文中针对Oracle数据库跨平台容灾的目的,通过了解各种数据库复制解决方案,对各种复制技术进行分析和对比。研究基于Redo log复制技术的数据库复制软件原理。结合模拟常用系统环境进行方案设计的试验,得出基于Redo ...
ORACLE 修改redo日志文件 大小的方法 供大家参考
理解RedoLog与UndoLog的关系 理解UndoLog的作用 掌握数据和回滚日志的逻辑存储结构 掌握原子性、一致性和持久性的实现机制 理解MVCC的概念 分辨当前读和快照读 理解一致性非锁定读课堂目标 理解MySQL中行锁相关的...
关于文件头、日志头、块头、以及一条insert语句的详细解析,并结合dump文件做验证。吐血整理。