服务器 频道

在Oracle中调试SGA

  【IT168 服务器学院】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;
  <1
  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=
0
相关文章