设为首页 收藏本站
查看: 1820|回复: 0

[经验分享] ORACLE SGA调优

[复制链接]

尚未签到

发表于 2016-7-17 09:10:44 | 显示全部楼层 |阅读模式
  /*1)Library Cache的命中率:
.计算公式:Library Cache Hit Ratio = sum(pinhits) / sum(pins)
通常在98%以上,否则,需要要考虑加大共享池,绑定变量,修改cursor_sharing等参数
  数据:
*/
/*
二.共享池有三个组件组成,Library Cache(库高速缓存区),
Data Dictionary Cache(数据目录高速缓存区),User Global Area(用户全局区)
*/
SELECT SUM(pinhits) / sum(pins) FROM V$LIBRARYCACHE;
  /*
alter system set shared_pool_size = 10;*/
  /*
2.计算共享池内存使用率:
其中: &TSP_IN_M是你的总的共享池的SIZE(M)
共享池内存使用率,应该稳定在75%-90%间,太小浪费内存,太大则内存不足。
查询空闲的共享池内存:
  ? 共享池 是哪个
*/
  SELECT (1 - ROUND(BYTES / (&TSP_IN_M * 1024 * 1024), 2)) * 100 || '%'
  FROM V$SGASTAT
 WHERE NAME = 'free memory'
   AND POOL = 'shared pool';
  /*
3.db buffer cache命中率:
alter system set DB_CACHE_SIZE = ?;
计算公式:Hit ratio = 1 - [physical reads/(block gets + consistent gets)
通常应在90%以上,否则,需要调整,加大DB_CACHE_SIZE
数据:
*/
  SELECT NAME,
       PHYSICAL_READS,
       DB_BLOCK_GETS,
       CONSISTENT_GETS,
       1 - (PHYSICAL_READS / (DB_BLOCK_GETS + CONSISTENT_GETS)) "Hit Ratio"
  FROM V$BUFFER_POOL_STATISTICS
 WHERE NAME = 'DEFAULT';
  /*
4)数据缓冲区命中率:
  这里命中率的计算应该是
令 x = physical reads direct + physical reads direct (lob)
命中率 =100 - ( physical reads - x) / (consistent gets + db block gets - x)*100
通常如果发现命中率低于90%,则应该调整应用可可以考虑是否增大数据缓冲区
  ?数据缓冲区怎么加大 db_block_buffers
  */
  SELECT NAME, VALUE
  FROM V$SYSSTAT
 WHERE NAME IN
       ('session logical reads', 'physical reads', 'physical reads direct',
        'physical reads direct (lob)', 'db block gets', 'consistent gets');
  /*select 100 -
       (884445 - (550 + 134160)) / (431318737 + 7720764 - (550 + 134160)) * 100
  from dual;
*/
  /*5.共享池的命中率:*/
select sum(pinhits - reloads) / sum(pins) * 100 "hit radio"
  from v$librarycache;
  SELECT * FROM v$sysstat t WHERE NAME = 'sorts (memory)';
--查询内存排序数
SELECT * FROM v$sysstat t WHERE NAME = 'sorts (disk)';
--查询磁盘排序数
  /*
8)共享区字典缓存区命中率
计算公式:SUM(gets - getmisses - usage -fixed) / SUM(gets)
命中率应大于0.85
*/
  select sum(gets - getmisses - usage - fixed) / sum(gets) from v$rowcache;
  
/*
9)数据高速缓存区命中率
计算公式:1-(physical reads / (db block gets + consistent gets))
命中率应大于0.90最好
*/
  select name, value
  from v$sysstat
 where name in ('physical reads', 'db block gets', 'consistent gets');
  
/*
10)共享区库缓存区命中率
计算公式:SUM(pins - reloads) / SUM(pins)
命中率应大于0.99
*/
  select sum(pins-reloads)/sum(pins)  from v$librarycache;

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-245159-1-1.html 上篇帖子: Oracle 数据库脚本实例 下篇帖子: oracle函数(个人学习记录)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表