一、CHECKPIONT分为三类:
1)局部CHECKPIONT:
单个实例执行数据库所有数据文件的一个CHECKPIONT操作,属于此实例的全部脏缓存区写入数据文件。
触发命令:SQL>alter system checkpoint local;
这条命令显示的触发一个局部检查点。
2)全局CHECKPIONT:
所有实例(对应并行数据服务器)执行数据库所有数据文件的一个CHECKPIONT操作,属于此实例的全部脏缓存区写入数据文件。
触发命令:SQL>alter system checkpoint global;
这条命令显示的触发一个全局检查点。
3)文件CHECKPIONT:
所有实例需要执行数据文件集的一个检查点操作,如使用热备份命令alter tablespace USERS begin backup,或表空间脱机命令alter tablespace USERS offline,将执行属于USERS表空间的所有数据文件的一个检查点操作。
二、CHECKPIONT处理步骤:
1)获取实例状态队列:
实例状态队列是在实例状态转变时获得,ORACLE获得此队列以保证CHECKPIONT执行期间,数据库处于打开状态;
2)获取当前CHECKPIONT信息:
获取CHECKPIONT记录信息的结构,此结构包括当前CHECKPIONT时间、活动线程、进行CHECKPIONT处理的当前线程、日志文件中恢复截止点的地址信息;
3)缓存区标识:
标识所有脏缓存区,当CHECKPIONT找到一个脏缓存区就将其标识为需要进行刷新,标识的脏缓存区由系统进程DBWR进行写操作,将脏缓存区的内容写入数据文件;
4)脏缓存区刷新:
DBWR进程将所有脏缓存区写入磁盘后,设置一标志,标识已完成脏缓存区至磁盘的写入操作。系统进程LGWR与CKPT进程将继续进行检查,直至DBWR进程结束为止;
5)更新控制文件与数据文件。
注:控制文件与数据文件头包含CHECKPIONT结构信息。
查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/