关于ckpt的触发条件,以及实例恢复

2015-03-27 21:17 楼主 thinker。 来自:网站 5
已解决

关于ckpt的触发条件?

老师讲的时候是commit的时候就会触发ckpt,然 后lgwr,dbwr等,以前看到的资料是执行alter syatem checkpoint,或者数据开启关闭时会触发ckpt,ckpt触发后会通知dbwr,再是lgwr写,然后刚才网络上查了一下,ckpt触发条件有 以下几点:
1.当发生日志组切换的时候
2.当符合LOG_CHECKPOINT_TIMEOUT,LOG_CHECKPOINT_INTERVAL,fast_start_io_target,fast_start_mttr_target参数设置的时候
3.当运行ALTER SYSTEM SWITCH LOGFILE的时候
4.当运行ALTER SYSTEM CHECKPOINT的时候
5.当运行alter tablespace XXX begin backup,end backup的时候
6.当运行alter tablespace ,datafile offline的时候;

请老师帮忙详细分析下ckpt,包括ckpt功能,触发时做了哪些动作,以及准确的触发条件等。


我要回答 赞(0)
提问者采纳
2015-03-27 21:41 谭老师

ckpt的功能:

1.减少实例恢复或介质恢复的时间

2.保证缓存中的脏数据能够有规律的写到磁盘

3.保证在一个一致性关闭的情况下所有被提交的数据能够写到磁盘

触发时做的动作:

1.ckpt向dbwr发送写脏数据到磁盘的信号

2.ckpt更新控制文件中checkpoint 信息

3.ckpt更新数据文件中的checkpoint 信息

触发条件:

1.数据库做一致性关闭时

2.手动执行alter system checkpoint

3.redo log 切换

4.手动执行alter database begin backup

5.发生增量检查点时

详细信息参考:http://docs.oracle.com/cd/E11882_01/server.112/e40540/startup.htm#BABGDACG

 

回复(5) 赞(0) 踩(0)
评价讲师
共5条回复
  •  
    2015-03-27 22:12 楼主thinker。
    多谢回复总结,还问下,数据库启动时检查scn,确定是否进行实例恢复,这里的scn有数据文件头上的和控制文件里记录的scn,请问scn的记录还有什 么进程在记录,lgwr,dbwr写时会更新数据文件头和控制文件的scn么,这样的话又是怎么确定是否进行实例恢复的呢?
    回复
  •  
    2015-03-27 22:19 谭老师
    回复@thinker。:scn这个概念有点大,不是一两句话可以说清楚的,比如current_scn,checkpoint scn,datafile header scn,总之scn在oracle中是一个不断递增的数字,是为了标识数据的新旧版本,为了最终维持数据的一致性,所以scn会出现在oracle体系结 构中的各个地方,redo log中有,control file中有,datafile header中有,连block中也有,关于scn的具体细节我还是建议你多看看官方文档或者找几篇scn的文章通读一下。
    回复
  •  
    2015-03-27 22:26 楼主thinker。

    我在网上查到这个:

    1,在control file,redo log,data file中都存在SCN值;
    2,数据库open时,检查control file中记录的SCN值与数据文件,redo log文件是否一致,如果是,数据库打开,否则,提示错误;假如数据文件SCN值小于control file中的SCN值则提示该数据文件需要介质恢复;
    3,redo log 中 存在低SCN,高SCN值两种,当前的redo log文件的高SCN值为无穷大;日志发生切换时,高SCN值更新为系统当前SCN值,新日志文件低 SCN值为前日志文件高SCN值加1,高SCN值仍然为去穷大;数据库发生变化,则写redo log文件,同时SCN值会加1。
    4,检查点发生时,CKPT更新数据文件头。

    这 么说的话,就是只要数据库是非正常关闭的情况,数据文件跟日志文件的scn会不一致,就会做实例恢复,恢复的时候的起点是数据文件中记录的scn,就是说 假如我一个增量检查点是30分钟一次,距离上次检查点25分钟时数据库非正常关闭了,那么我们这25分钟的所有操作都要redo一遍了?
    回复
  •  
    2015-03-27 22:29 楼主thinker。
    回复@谭老师: 好的,我再仔细研究下SCN
    回复
  •  
    2015-03-27 22:46 谭老师
    回复@thinker。:你说的第四点肯定是不对的,控制文件中还有个scn叫last_scn,在数据库打开时这个值为空表示无穷大,一致性关闭的话这 个值是会等于数据库的检查点scn的,所以启动数据库时发现这个值为空那么肯定是要做实例恢复的,你后面举的增量检查点的理解是对的,只是增量检查点不会 30分钟一次,最短的可能就几秒钟时间,数据库做实例恢复时就是从上一次检查点开始恢复的。
    回复



    实例恢复:
    主要看checkpoint scn和last scn 是否一致,检查点有增量检查点,用来减短实例恢复时间。


    相关文章
    Oracle完全检查点和增量检查点详解:
    blog.csdn.net/l106439814/article/details/7801800
    了解Oracle中的scn:
    www.cnblogs.com/daduxiong/archive/2010/08/19/1803764.html
    Oracle中几种scn的作用:
    blog.itpub.net/29515435/viewspace-1126245/
    ckpt和scn
    chenlin10058.iteye.com/blog/1558474



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28713356/viewspace-1476451/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28713356/viewspace-1476451/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值