CKPT链和LRUW链问题,希望老师解答

老师,我一直再听您的课,SCN那节我听了好几遍,一个问题一直弄不明白,CKPT和LRUW都链的是脏块,假如说某个脏块一直在LRUW的热端,且是第一个被修改的块,那样这个块肯定不会被写到磁盘,那他所对应的日志也不会被归档,也就是说LRBA一直不变,假如REDOlog写满了,Oracle会怎么办?
问题二:DBWn进程肯定是从LRUW链的冷端开始往磁盘写,但是这些数据块的顺序肯定不是和CKPT链上块的顺序不一致,这时Oracle是如何处理的,谢谢!
标签: 暂无标签
sunhaikuo

写了 3 篇文章,拥有财富 71,被 1 人关注

转播转播 分享分享 分享淘帖
回复

使用道具

P4 | 发表于 2013-8-10 21:58:26
自己定下
回复

使用道具

P4 | 发表于 2013-8-13 09:13:50
假如说某个脏块一直在LRUW的热端,且是第一个被修改的块,如果ckpt没有开始工作,那么这个脏块是不会写到磁盘。 chpt开始工作了,刚好这个脏块在chpt链上靠前的位置,这个脏块就可以被写入啦。
lruw是按照热冷顺序排列的,最冷段优先被写入磁盘;
chpt链是按照最早修改时间排列的,修改时间越早的先被写入磁盘。这2个链不是互斥的感念,是相互作用的。
假如REDOlog写满了,Oracle会怎么办,再换一个日志文件呗。
CKPT工作时,不管lruw的脏块的热的还是冷的,只要在chpt链上,都会写入磁盘。
回复

使用道具

P4 | 发表于 2013-8-18 13:08:57
hobbypei 发表于 2013-8-13 09:13
假如说某个脏块一直在LRUW的热端,且是第一个被修改的块,如果ckpt没有开始工作,那么这个脏块是不会写到磁 ...

非常感谢!我懂了不得
回复

使用道具

P4 | 发表于 2013-9-2 09:04:11
写的时候没得影响的,如果是从lruw写,写好了就把刚写的再从ckpt链中踢掉;如果是从ckpt写,写好了就把刚写的再从lruw链中踢掉
回复

使用道具

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈