Oracle checkpoint是什么?
Oracle检查点:检查点是一个事件,是一些动作
而SCN则是oracle数据库里的时钟,是吗?
SCN,CHECKPOINT,REDO ENTRY,COMMIT这四者的关系到底是什么?
当你commit的时候,oracle会产生两个动作:
1:把REDO LOG BUFFER中的内容同步到disk中。
2:在系统中生成一个SCN号,记录下这个commit来,也就是记录下这个事务来
(DML语句在你离开的时候,会隐式的进行一次commit)。
但是说:数据同步保证,逻辑上来说,在我们commit之后,就同步了
但是从物理的角度来讲,commit之后,disk中的datafile中的block中的内容并没有改变
Commit只不过是把REDO LOG BUFFER中的redo entry同步到redo log中了。
日志写是顺序写,而datafile写,是异步写
这个时候,我们是如何保证我们查询到的数据是同步的呢?
是commit修改过之后的呢?
我们查询数据,在oracle中如果是在buffer cache中的话,那样会产生logical read,这样的话,这些数据是脏数据,
这样的话,产生的是一件事情,如果脏数据是存在buffer cache中的话,我们查询的话,肯定是没有问题的,数据都是新的
Case1:shutdown 数据库,会产生什么?
Shutdown数据库,物理上会把所有的脏数据都sync到disk的datafile中
但是具体是怎么实现的呢?
Checkpoint又是什么?
检查点:又会牵扯到另外的一些机制:
RBA: redo byte address:这指的是:redoentry的具体的地址
HIGH RBA:buffer cache中的脏数据最近一次修改,对应的redo 的地址
LOW RBA:buffer cache中的脏数据第一次进行修改,对应的redo的地址
BCQ: buffer checkpointqueue: 缓存检查点队列:
具体指的是什么内容?
我猜呢?
What is checkpoint?
There is two checkpoint
Normal checkpoint和增量checkpoint
目的是实现数据同步,
现在很奇怪的一点是,怎么实现的数据同步
Oracle有两个进程:DBWR进程和CKPT进程
DBWR进程:
本文出自 “原歌轩” 博客,请务必保留此出处http://yuangeqingtian.blog.51cto.com/6994701/1366019