何时触发检查点
检查点作写什么:
[@more@]切换日志会触发checkpoint
什么是checkpoint?
checkpoint是一个数据库事件,它将已修改的数据从高速缓存刷新到磁盘,并更新控制文件和数据文件。
什么时候发生checkpoint?
我们知道了checkpoint会刷新脏数据,但什么时候会发生checkpoint呢?以下几种情况会触发checkpoint。
1.当发生日志组切换的时候
2.当符合LOG_CHECKPOINT_TIMEOUT,LOG_CHECKPOINT_INTERVAL(8i),fast_start_io_target,fast_start_mttr_target(9i)参数设置的时候
3.当运行ALTER SYSTEM SWITCH LOGFILE的时候
4.当运行ALTER SYSTEM CHECKPOINT的时候
5.当运行alter tablespace XXX begin backup,end backup的时候
6.当运行alter tablespace ,datafile offline的时候;
所以,我们通过设置合适大小的日志组,日志文件来 控制 ckpt 的切换频率。
一个非常真实的案例:
cpu 的利用率非常高,top 看的时候,有个进程就是oracle 后台进程ora_ckpt_ 占用的cpu 资源比非常大,
通过查询其它的情况,通过加大日志文件,增加日志组,该性能问题得到解决。
当日志切换的时候alter system switch logfile 的时候 : oracle 需要作一下的事情:
1 选择要切换的日志文件 :
ORACLE 从控制文件获取日志文件的信息,选择日志序列号最小的那个,一旦选择这个日志,设置其状态,使之成为
下一个日志文件
2 刷新当前日志并停用重作日志生成:
3 在控制文件,数据文件进行切换并关闭日志。
4 打开新的日志文件:使之成为current ,继续接收日志读写。
ckpt 需要做的工作:
1 捕获当前检查点信息
2 标识脏数据区
3 刷新脏数据区 dbw 进程把脏数据写到数据文件中,所以检查点的快慢很大程度上取决月dbw 的快慢
4 更新数据文件和控制文件
同时理解ckpt 需要理解scn
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/66233/viewspace-995035/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/66233/viewspace-995035/