ITPub博客

flush buffer cache

原创 Linux操作系统 作者:oracle_ace 时间:2007-12-12 20:50:12 0 删除 编辑
    如果访问的数据块不在buffer cache中,就需要扫描LRU链表(寻找free buffer),当达到扫描块数限制后(40%)还没有找到空闲buffer,就需要通知DBW0将脏缓存回写到磁盘。(如果checkpoint queue达到了25%,也会出发DBWn进程去写脏数据).在这种情况下,用户进程访问一个数据块的过程是最长的,也就是效率最低的。如果一个系统中存在大量的脏缓冲,那么就可能导致用户进程访问数据性能下降。
 
以上提到的两个百分比可以通过以下两条命令查到:

select kvittag,kvitval,kvitdsc from x$kvit
where kvittag='kcbldq';
 
select kvittag,kvitval,kvitdsc from x$kvit
where kvittag='kcbfsp';

我们可以通过人工干预将所有脏缓冲回写到磁盘去,这就是flush buffer。

在9i,可以用以下语句:

alter system set events = 'immediate trace name flush_cache'; --9i

在10g,可以用以下方式(9i的方式在10g仍然有效):

alter system flush buffer_cache; 

另外,9i的设置事件的方式可以是针对系统全部的,也可以是对会话的(即将该会话造成的脏缓冲回写)。

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

请登录后发表评论 登录
全部评论

注册时间:2007-12-10

  • 博文量
    284
  • 访问量
    783564