欢迎来到天天文库
浏览记录
ID:46465941
大小:81.50 KB
页数:7页
时间:2019-11-24
《检查点SCN深入研究》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、检查点SCN深入研丸检查点概述大多数关系型数据库都采用“在提交时并不强迫针对数据块的修改完成”而是“提交时保证修改记录(以重做日志的形式)写入日志文件”的机制,来获得性能的优势。这句话的另外一种描述是:当用户提交事务时,写数据文件是”异步”的,写日志文件是”同步”的。这就可能导致数据库实例崩溃吋,内存中的DB_Buffer中的修改过的数据,可能没有写入到数据块中。数据库在重新打开时,需要进行恢复,来恢复DBBuffer中的数据状态,并确保已经提交的数据被写入到数据块中。检查点是这个过程中的重要机制,通过它来确定,恢复时哪些重做口志应该被扫描并应用于恢复。要了解这个检查点,首先要
2、知道checkpointqueu概念,检查点发生后,触发dbwn,CKPT获取发牛检查点时对应的SCN,通知DBWn要写到这个SCN为止,dbwr写dirtybuffer是根据buffer在被首次modify的时候的时间的顺序写岀,也就是buffer被modify的时候会进入一个queue(checkpointqueue),dbwr就根据queue从其中批量地写到数据文件。由于这里有一个顺序的关系,所以dbwr的写的进度就是可衡量的,写到哪个buffer的时候该buffer的首次变化时候的sen就是当前所有数据文件block的最新sen,但是由于无法适时的将dbwr的进度记录下
3、来,所以oracle选择了一些策略。其中就包括ckpt进程的检查点和心跳。检查点发生以后,CKPT进程检查checkpointqueue(也就是脏块链表)是否过长,如果是,则触发DBWn,将一部分脏块写入数据文件,从而缩短checkpointqueueocheckpoint发生时,一方面通知dbwr进行下一批写操作,(dbwr写入的时候,一次写的块数是有一个批量写的隐藏参数控制的。)另一方而,oracle采用了一个心跳的概念,以3秒的频率将dbwr写的进度反应到控制文件中,也就是把dbwr当前刚写完的dirtybuffer对应的sen写入数据文件头和控制文件,这就是检查点sen
4、。这个3秒和增量检查点不是一个概念,3秒只是在控制文件中,ckpt进程去更新当前dbwr写到哪里了,这个对于ckpt进程来说叫heartbeat,heartbeat是3秒一次,3秒可以看作不停的检查并记录检查点执行情况(DBWR的写进度)。检查点发生Z后数据库的数据文件、控制文件处于一致状态的含义是不需要进行介质恢复,只表示数据文件头一致,但是并不表示数据文件内容一致,因为数据文件内容可能在没有发牛检查点的其他情况下的dbwr写数据文件,这样数据文件内容就不一致,若掉电需要进行崩溃恢复。二、触发的条件这里需要明片两个概念”完全检查点和增量检查点”的区别。增量检查点(increm
5、entalcheckpoint)oracle8以后推lBYincrementalcheckpoint的机制,在以前的版木里每checkpoint时都会做一个fullthreadcheckpoint,这样的话所有脏数据会被写到磁盘,巨大的i/o对系统性能带来很大影响。为了解决这个问题,oracle引入了checkpointqueue机制,每一个脏块会被移到检查点队列里面去,按照lowrdb(第一次对此块修改对应的redoblockaddress)来排列,靠近检查点队列尾端的数据块的lowrba值是最小的,而且如果这些赃块被再次修改后它在检查点队列里的顺序也不会改变,这样就保证了越
6、早修改的块越早写入磁盘。每隔3秒钟ckpt会去更新控制文件和数据文件,记录checkpoint执行的情况。在运行的Oracle数据屮,有很多事件、条件或者参数來触发检查点。比如当已通过正常事务处理或者立即选项关闭例程时;(shutdownimmediate或者Shutdownnormal;)当通过设置初始化参数LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT和FAST_START_IO_TARGET强制时;当数据库管理员手动请求时;(ALtersystemcheckpoint)altertablespace・・・offline;每次日
7、志切换时;(altersystemswitchlogfile)需要说明的是,altersystemswitchlogfile也将触发完全检查点的发生。alterdatabasedatafile...offline不会触发检查点进程。如果是单纯的offlinedatafile,那么将不会触发文件检查点,只有针对offlinetablespace的时候才会触发文件检查点,这也是为什么onlinedatafile需要mediarecovery而onlinetablespace不需要。对于表空间的o
此文档下载收益归作者所有