问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle在windows下DBWn、CKPT这些是进程还是线程??

发布网友 发布时间:2022-05-06 01:31

我来回答

2个回答

懂视网 时间:2022-05-06 05:53

DBWn:数据库块写入器(Database Block Writer)负责将脏块写入磁盘的后台进程。 CKPT:检查点进程(Checkpoint Process)只是更

DBWn:数据库块写入器(Database Block Writer)负责将脏块写入磁盘的后台进程。

CKPT:检查点进程(Checkpoint Process)只是更新数据文件的文件首部,以辅助建立检查点的进程(DBWn)。

LGWR:日志写入器(Log Writer)负责将SGA中重做日志缓冲区的内容刷新输出到磁盘。

其实这三个进程都是为了更好地完成一件事:安全高效地实现内存数据块写入数据文件,就是将内存中修改的数据反映到硬盘的数据文件上。

将内存数据块写入数据文件实在是一个相当复杂的过程,在这个过程中,首先要保证安全。所谓安全,就是在写的过程中,一旦发生实例崩溃,要有一套完整的机制能够保证用户已经提交的数据不会丢失;其次,在保证安全的基础上,要尽可能地提高效率。众所周知,I/O操作是最昂贵的操作,所以应该尽可能地将脏数据块收集到一定程度以后,再批量写入磁盘中。

直观上最简单的解决方法就是,每当用户提交的时候就将所改变的内存数据块交给DBWn,由其写入数据文件。这样的话,一定能够保证提交的数据不会丢失。但是这种方式效率最为低下,在高并发环境中,一定会引起I/O方面的争用。Oracle当然不会采用这种没有伸缩性的方式。Oracle引入了CKPT和LGWR这两个后台进程,这两个进程与DBWn进程互相合作,提供了既安全又高效的写脏数据块的解决方法。

如何保证安全?

用户进程每次修改内存数据块时,都会在日志缓冲区(log buffer)中构造一个相应的重做条目(redo entry),该重做条目描述了被修改的数据块在修改之前和修改之后的值。而LGWR进程则负责将这些重做条目写入联机日志文件。只要重做条目进入了联机日志文件,那么数据的安全就有保障了,否则这些数据都是有安全隐患的。LGWR是一个必须和前台用户进程通信的进程。LGWR 承担了维护系统数据完整性的任务,它保证了数据在任何情况下都不会丢失。

假如DBWR在写脏数据块的过程中,突然发生实例崩溃时,该怎么办?我们已经知道,用户提交时,Oracle是不一定会把提交的数据块写入数据文件的。那么实例崩溃时,必然会有一些已经提交但是还没有被写入数据文件的内存数据块丢失了。当实例再次启动时,Oracle需要利用日志文件中记录的重做条目在buffer cache中重新构造出被丢失的数据块,从而完成前滚和回滚的工作,并将丢失的数据块找回来。于是这里就存在一个问题,就是Oracle在日志文件中找重做条目时,到底应该找哪些重做条目?换句话说,应该在日志文件中从哪个起点开始往后应用重做条目?注意,这里所指的日志文件可能不止一个日志文件。

这个起点意义重大,在日志文件中位于这个起点之前的重做条目所对应的在buffer cache中的脏数据块已经被写入了数据文件,从而在实例崩溃以后的恢复中不需要去考虑。而这个起点以后的重做条目所对应的脏数据块实际还没有被写入数据文件,如果在实例崩溃以后的恢复中,需要从这个起点开始往后,依次取出日志文件中的重做条目进行恢复。考虑到目前的内存容量越来越大,buffer cache也越来越大,buffer cache中包含几百万个内存数据块也是很正常的现象的前提下,如何才能最有效的来定位这个起点呢?

为了能够确定这个最佳的起点,Oracle引入了名为CKPT的后台进程,通常也叫作检查点进程(checkpoint process)。这个进程与DBWn共同合作,从而确定这个起点。同时,这个起点也有一个专门的名字,叫做检查点位置(checkpoint position,该检查点位置记录在控制文件里)。Oracle为了在检查点的算法上更加的具有可扩展性(也就是为了能够在巨大的buffer cache下依然有效工作),引入了检查点队列(checkpoint queue),该队列上串起来的都是脏数据块所对应的buffer header。而每次DBWn写脏数据块时,也是从检查点队列上扫描脏数据块,并将这些脏数据块实际写入数据文件的。当写完以后,DBWn会将这些已经写入数据文件的脏数据块从检查点队列上摘下来。这样即便是在巨大的buffer cache下工作,CKPT也能够快速的确定哪些脏数据块已经被写入了数据文件,而哪些还没有写入数据文件,显然,只要在检查点队列上的数据块都是还没有写入数据文件的脏数据块。同时为了能够尽量减少实例崩溃后恢复的时间,Oracle还引入了增量检查点(incremental checkpoint),从而增加了检查点启动的次数。如果每次检查点启动的间隔时间过长的话,再加上内存很大,可能会使得恢复的时间过长。因为前一次检查点启动以后,标识出了这个起点。然后在第二次检查点启动之前,DBWn可能已经将很多脏数据块已经写入了数据文件,而假如在第二次检查点启动之前发生实例崩溃,导致在日志文件中,所标识的起点仍然是上一次检查点启动时所标识的,导致Oracle不知道这个起点以后的很多重做条目所对应的脏数据块实际上已经写入了数据文件,从而使得Oracle在实例恢复时重复地处理一遍,效率低下,浪费时间。

上面说到了有关CKPT的两个重要的概念:检查点队列(包括文件队列)和增量检查点。检查点队列上的buffer header是按照数据块第一次被修改的时间的先后顺序来排列的。越早修改的数据块的buffer header排在越前面,同时如果一个数据块被修改了多次的话,在该链表上也只出现一次。而且,检查点队列上的buffer header还记录了脏数据块在第一次被修改时,所对应的重做条目在重做日志文件中的地址,,也就是LRBA(Low Redo Block Address),Low表示第一次修改时对应的RBA。每个检查点都会由checkpoint queue latch来保护。

上面所描述的概念,用一句话来概括,其实就是DBWn负责写检查点队列上的脏数据块,而CKPT负责记录当前检查点队列的第一个数据块所对应的的重做条目在日志文件中的地址。而到底应该写哪些脏数据块,写多少脏数据块,则要到检查点队列上才能确定的。

linux

热心网友 时间:2022-05-06 03:01

在windows环境下,oracle整个是一个进程,而dbwn,pmon,smon,logwrite,ckpt等都是该进程下的线程。
在unix中,上述那些都是进程。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求抛物线y×y-6x=0的焦点坐标和准线方程 6-6x=6的解是x=0 .( ) 判断题 财富 一个方程问题:6x=0有没有解 6x=0,x=( ) 下列算式是方程的是( )A.101-1=100B.8x-2C.6x=0D.x-17 6X=0,这个方程没有解 对吗? 6x=0不是方程.××.(判断对错) 6x=0是方程. __ (判断对错) 今晚地球停电一小时,做点什么好呢 月经第八天还有褐色分泌物预防什么病 ue4中事件图表set initial location是哪个 丈夫写遗嘱中百年后的财产由妻子全权代理是什么意思? 在婚姻在存继续期问只有夫妇两人妻子病故丈夫怎样写遗嘱? 手机QQ浏览器打开的网页为什么都是电脑版的?怎么切换成手机版的? 手机QQ浏览器怎么把电脑版网页变成手机版的?UI没用 求解? 请问怎么把手机QQ浏览器安装在电脑上使用啊? 电脑上怎么使用手机QQ浏览器? 梦琪魔鬼猫有线带麦耳机戴久了耳朵疼吗 梦琪魔鬼猫有线带麦耳机戴久了耳朵疼吗 魔鬼猫的耳机怎么样 好不好 168魔鬼猫耳机怎么样 请问一下,电脑里面有几个软件不是我下载的,但是应用程序里找不到,根本无法删除怎么办? 怎么删除QQ群里的图片 公鸡的外形描写,详细!急!!! 泡过黑豆的醋能继续泡黑豆吗? 公鸡的耳朵在哪里 帮我查一下公鸡的耳朵像什么 泡过黑豆的醋还能再泡第二次吗? 鸡的耳朵长在眼睛的后面,那儿有一撮儿突起的毛."那儿”是指什么 泡了二次的黑豆醋还能再泡吗 求好听的游戏名字,要3到5个字的,不带符号的,谢谢 一种看起来像棉布,但摸起来很软,又好像带点绒的布料叫什么吖?? Oracle中3大内存4大文件5大进程都是包括哪些 autoCAD2007关于打印,我画的图,预览是空白,打印也是,应该怎么设置? 2016年二年级寒假作业日记怎么写 修改QQ密码,发送了好几条短信,都不管用 我要修改qq密码但是我发了验证短信为什么点我已发送没有验证成功 二年级寒假作业 我做做最棒的一件事 日记 qq进入保护模式申诉成功改密码发短信都解除不了怎么办,客服也找不到 如何让网赌退钱?- 问一问 富二代误入网络赌博,三个月输掉70万,网络赌博是如何让人陷入骗局? 如何让网赌退钱? 我的空调不制热 TCL KFRD-52LW/BJ4 孕妇梦见白色大蟒蛇尾巴先进洞,头漏在外面对我笑是什么意思 TCL空调型号KFRd-35GW/CQ22为什么不能制热 tcl空调无法制热,显示e9 怎样才能在qq服务号里添加qq运动 出租安全吗? 描写温度很温暖的词语有哪些? 温度在多少取值内为温暖,寒冷的什么变化?