过着简单,真实的生活,喜欢收藏变形金刚(TFE,G1,SL系列),研究金融股市,KOF98,篮球,学习研究Oracle技术,我并不是一个全职的Oracle DBA,但是对于Oracle技术的热爱和研究,是一个不争的事实,愿意结交广大Oracle技术爱好者!MSN:oracle_kof_tf@hotmail.com

flush buffer cache

上一篇 / 下一篇  2007-12-12 20:50:12 / 个人分类:Oracle数据库技术-内存管理

    如果访问的数据块不在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的设置事件的方式可以是针对系统全部的,也可以是对会话的(即将该会话造成的脏缓冲回写)。


TAG:

引用 删除 33   /   2008-08-28 16:15:04


:funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk:
:funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk: :funk:
引用 删除 33   /   2008-08-28 16:14:20
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar