非空闲的等待事件-free buffer waits

free buffer waits(Configuration)

  1. 在将一个块读入到缓冲存储器之前,Oracle进程必须发现并获得用于这个块的空闲缓冲区。如果找不到LRU列表上的空闲缓冲区,或缓冲区不可用,那么会话就会在free buffer waits事件上等待。
  2. DBWR进程负责在LRU列表上建立清洁缓冲区。
  3. ORACLE前台进程扫描LRU列表,要到预先定义的限度才停止扫描,这个限度通常是LRU列表的一定百分比,在ORACLE9i中,这个限度是40%,这个值在视图x$kvit中可以查看到:

select * from x$kvit where kvittag = 'kcbfsp'

KVITTAG

KVITDSC

KVITVAL

kcbfsp

Max percentage of LRU list foreground can scan for free

40

如果扫描LRU列表至该限度依旧未找到合适的空闲缓冲区,前台进程则向DBWR提交,DBWR建立清洁的缓冲区,在DBWR建立清洁缓冲区的工作中,ORACLE进程在free buffer waits事件上等待。

[@more@]
  1. ORACLE保持对每个空闲缓冲区请求的计数。可以从v$sysstat视图中查询而得:

select * from v$sysstat s where s.NAME = 'free buffer requested'

  1. ORACLE保持对空闲缓冲区请求失败的次数:

select * from v$system_event s where s.EVENT = 'free buffer waits'

注:字段total_waits则表明总等待次数。

  1. 可以从v$sysstat视图中查询而得进程必须查看多少缓冲区以获得所要求的free buffer:

select * from v$sysstat s where s.NAME in ('free buffer inspected','free buffer requested')

注:如果inspected数量远远大于requested数量,则意味着进程需要扫描更多的LRU列表以获得可用的缓冲区。

  1. 产生该等待事件的原因:

原因

说明

低效率的SQL语句

  1. 参数说明:

事件号:137

事件名:free buffer waits

参数一:ORACLE读取块的文件号file#

参数二:块号block#

参数三:LRU列表的set-id#

  1. 等待时间:最多1秒,然后再次查找。

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

转载于:http://blog.itpub.net/79291/viewspace-910232/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值