Oracle调试SGA

王朝oracle·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

■ 1.高速缓冲区

select 100*(1-(select value from v$sysstat where name = 'physical reads')/((select value from v$sysstat where name = 'db block gets')+(select value from v$sysstat where name = 'consistent gets'))) 高速缓冲区命中率 from dual;

=90%

提高命中率方法:增加高速缓存区DB_BLOCK_BUFFERS=

■ 2.库缓冲区

select 100*sum(pins-reloads)/sum(pins) 库缓冲区命中率 from v$librarycache;

=99

可以增加共享池shared_pool_size=

但应该查询当前的空闲内存:如下

SQL select * from v$sgastat where name = 'free memory';

POOL NAME BYTES

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

shared pool free memory 19997888

large pool free memory 4291456

java pool free memory 32768

如果命中率低,但空闲内存较多,可能是应用程序的问题

注意:SQL语句要严格一致,才能被不需parse

■ 3.字典缓冲区(行缓冲区)

select 100*sum(gets - getmisses - usage - fixed)/sum(gets) 行缓冲区命中率 from v$rowcache;

= 85

调整方法与调试库缓冲区命中率是一致的,因为,ORACLE自己决定使用多少字典缓冲区内存。

■ 4.回滚段

4.1检测回滚段争用

select 100*sum(waits)/sum(gets) 回滚段争用率 from v$rollstat;

4.2检测收缩

select b.name,a.shrinks from v$rollstat a,v$rollname b where a.usn=b.usn;

shrinks(收缩率)太大,需要调整回滚段大小

■ 5.redo日志缓存器

select name,value from v$sysstat where name = 'redo buffer allocation retries';

value显示等待redo日志缓存器展开存储槽的次数。

多检查几次,如果数字是增加的,可以增加LOG_BUFFER=

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航