oracle脏块,检查点队列上的最早脏的数据块再次被修改以何种顺序刷到磁盘

>如果dbwr扫描检查点队列,发现队列过长决定刷出从队首到后面的某一个buffer之间的脏块的时候,如果中间有某个脏块此时恰好被别的进程以独占的pin锁住的话,dbwr会怎么办?例如dbwr决定刷出从1到10的脏块,此时第3个恰好在被别的进程修改,这时dbwr是等待修改完毕,还是跳过这个脏块呢?

这是我在贴吧提问,以下是别人的回复,楼主可以参考一下。

==>

FYI

制造一个长时间的 脏块被pin ,

10:46:44 SYS @ G10R25 > select dirty ,status from v$bh where file#=4 and block#=131765;

DIR STATUS

--- ---------------------

Y xcur

SO: 0x83384290, type: 4, owner: 0x8326ffd8, flag: INIT/-/-/0x00

(session) sid: 150 trans: (nil), creator: 0x8326ffd8, flag: (41) USR/- BSY/-/-/-/-/-

DID: 0001-0011-00000010, short-term DID: 0000-0000-00000000

txn branch: (nil)

oct: 3, prv: 0, sql: 0x7c7f79e0, psql: 0x7e078100, user: 67/MACLEAN

service name: SYS$USERS

O/S info: user: oracle, term: pts/3, ospid: 16211, machine: vrh8.oracle.com

program: sqlplus@vrh8.oracle.com (TNS V1-V3)

application name: SQL*Plus, hash value=3669949024

waiting for 'buffer busy waits' wait_time=0, seconds since wait started=75

file#=4, block#=202b5, class#=1

blocking sess=0x(nil) seq=29

Dumping Session Wait History

for 'buffer busy waits' count=1 wait_time=0.854820 sec

file#=4, block#=202b5, class#=1

for 'buffer busy waits' count=1 wait_time=0.977267 sec

file#=4, block#=202b5, class#=1

for 'buffer busy waits' count=1 wait_time=0.977512 sec

file#=4, block#=202b5, class#=1

for 'buffer busy waits' count=1 wait_time=0.977506 sec

file#=4, block#=202b5, class#=1

for 'buffer busy waits' count=1 wait_time=0.978095 sec

file#=4, block#=202b5, class#=1

for 'buffer busy waits' count=1 wait_time=0.976960 sec

file#=4, block#=202b5, class#=1

for 'buffer busy waits' count=1 wait_time=0.977529 sec

file#=4, block#=202b5, class#=1

for 'buffer busy waits' count=1 wait_time=0.977513 sec

file#=4, block#=202b5, class#=1

for 'buffer busy waits' count=1 wait_time=0.977504 sec

file#=4, block#=202b5, class#=1

此时触发 完全检查点

10:46:55 SYS @ G10R25 > alter system checkpoint;

==>hang

详见链接 http://tieba.baidu.com/p/4142925306

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值