首页 > 应用开发 > IT综合 > Checkpoint总结
Checkpoint就是一个重做流中的一个点,是一个SCN。所有的在这个点之前的所有发生的脏数据块将在检测点发生之后写入到磁盘中。检测点能够多个事件触发,例如数据库的关闭,线程的关闭,热备份等。由于触发方式的不同使得检测点有不同的分类:
n 数据库、全局检测点
n 线程、本地检测点(RAC)
n 数据文件检测点
n 增量检测点
n 最小检测点(DDL基础)
数据库、全局检测点
产生的原因:
1) 日志切换
2) 初始化参数触发
3) Alter system checkpoint触发
执行的步骤:
1) 获取当前日志缓存区的RBA
2) 调用DBWn
3) 使用checkpoint队列将RBA之上的所有脏数据块写入磁盘
4) 更新数据文件头和控制文件
线程、本地检测点(RAC)
产生的原因:
在RAC中对一个实例进行检测点检测。Alter system checkpoint local触发。
数据文件检测点
所有的属于这个数据文件并在当前检测点SCN之上的数据块被写入磁盘。
产生的原因:
1) 热备份
2) 表空间脱机
增量检测点
这样做有以下的好处:
1) 避免了全检测点的大的IO活动
2) 只是写最老的块,而不是将所有的块都写入磁盘
3) 只是将检测点的信息记录到控制文件,从而避免了数据文件头的更新。
最小检测点(DDL基础)
一些DDL,例如删除表等,这样只是对这个对象进行必要的检测点的检测。
这里有一个问题就是,为什么频繁的日志切换会造成系统的负担?
我的意见是:由于日志切换操作会引发全检测点。
二是会造成日志归档。
相关参数:
LOG_CHECKPOINTS_TO_ALERT
这个参数是允许将检测点记录到警告文件中。这个参数的设置对于确定检测点是否发生的比较频繁。
缺省的是false
LOG_CHECKPOINT_INTERVAL
这个参数指定的是一定数目的重做日志文件块的数目来控制检测点发生的频度。这个参数来控制增量检测点的频度。这个重做日志文件块的数目说的是物理操作系统的块,而不是数据库的块。
LOG_CHECKPOINT_TIMEOUT
这个参数和上一个的区别就是使用的事件(秒)。
FAST_START_IO_TARGET
仅仅用于企业版,指定的是在crash或者实例恢复的时候所需要的IO数目。
FAST_START_MTTR_TARGET
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/222350/viewspace-908027/ ,如需转载,请注明出处,否则将追究法律责任。