首页 > 数据库 > Oracle > 深入浅出-检查点scn
最近又开始重新查看eygle的深入浅出了,大师的书籍确实值得一读再读,这里摘要下大师的第一张数据库启动关闭的一些个人觉得需要细细理解的知识点。
checkponit cnt在open状态检验
我们说过:当我们使用file_hdrs事件来转储数据文件头信息时,Oracle会转储两部分信息,一部分来自控制文件,一部分来自数据文件,在数据库启动过程中,这两部分信息要用来进行启动验证。
在数据库open的过程中,Oracle要进行检查中包含以下两个过程:
第一次检查数据文件头中的Checkpoint cnt是否与对应控制文件中的Checkpoint cnt一致.
如果相等,进行第二次检查.
第二次检查数据文件头的开始SCN和对应控制文件中的结束SCN是否一致如果结束SCN等于开始SCN,则不需要对那个文件进行恢复.
对每个数据文件都完成检查后,打开数据库.同时将每个数据文件的结束SCN设置为无穷大.同样正常关闭数据库时,stop scn和数据文件头的启动scn一致,如果意外关闭不进行检查点,则控制文件中记录的数据文件stop scn将无限大。
scn是oracle数据库的内部时钟机制,oracle通过scn来维护数据库的一致性,维护oracle的恢复机制。
这里个人说一下数据库实例恢复起始点和终止点是low cache rba到on disk rba,也就是上一次检查点写进控制文件中的low cache rba(记录的是上次检查点时将dirty写进disk时的rba,rba上由日志文件序号,数据文件序号和日志记录偏移量组成, 其实数据文件头也记录了rba,当丢失了ctl时,数据文件就是根据文件头的rba开始执行恢复的,也就是dbwn的写出进度),而on disk rba是lgwr写到disk上的rba,也就是lgwr的进度,而检查点就是为了减少恢复的时间。
(CKPT每三秒会在控制文件中记录检查点的位置,以表示Instance Recovery时开始恢复的日志条目,这个概念称为检查点的“心跳”(heartbeat),ckpt是有心跳,每三秒会更新ctl中的mount id,当执行检查点,dbwr从检查点队列按照low rba顺序写出,ckpt进程使用非常轻量级的控制文件更新协议,将当前的对地rba写入控制文件,而增量检查点则是通过fast-start checkpoint特性实现。)
数据文件头 控制文件 日志文件 数据块头 事务表中都存在scn。scn随时间而改变,但是可能并不连续,除非重建数据库,不然scn不可能为0。
select dbms_flashback.get_system_change_number from dual--获得数据库当前或相近的scn
--系统当前的scn并不是在任何数据库操作都会发生变化,scn通常在事务提交或回滚改变
1 数据文件头部包含了该数据文件的checkpoint scn,表示数据文件最近一次执行检查点操作的scn
alter session set events 'immediate trace name file_hdrs level 10';--转储数据文件头
2 日志文件中包含了Low scn和Next scn
Low scn和Next scn这两个SCN表示该日志介于Low scn和Next scn的重做信息,对于current的日志文件,其最终的scn不可知,也就无穷大了
alter system dump logfile '' --dump日志的方式转储
检查点实际上只是一个数据事件,存在的原因在于减少崩溃恢复的时间
select * from v$instance_recovery
estimated_mttr根据基于Dirty Buffer的数量和日志快得出,此时数据库崩溃恢复的时间为estimated_mttr。
writes_autotune字段值就是由于自动调整检查点执行的写出次数,而ckpt_block_writes则是由于检查点写出的blocks数量
target_mttr代表期望的平均恢复事件,通常该参数应该等于fast_start_mttr_target参数设置值。当estimated_mttr接近或超过fast_start_mttr_target(v$instance_recovery target_mttr)时,将触发检查点,执行写出之后,系统恢复信息将会重新计算。
可能会出现estimated_mttr>target_mttr,可能是dbwr忙于写出,或checkpoint不能及时完成情况,以上来自oracle9I。
--oracle
当fast_start_mttr_target参数未设置,自动检查点调整生效。如果必须严格控制实例和节点信息恢复时间,那么可以设置fast_start_mttr_target为期望时间,如果恢复时间不严格控制,那么可以不设置fast_start_mttr_target,让oracle自动检查点调整特性
[@more@]来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25362835/viewspace-1056372/ ,如需转载,请注明出处,否则将追究法律责任。