文/温国兵

Oracle性能调整在工作中经常遇到,比如TopSQL的出现导致系统资源浪费严重、物理读过多导致IO出现瓶颈、独占锁导致事务不能提交、索引建立不合理导致查询速度极慢、PGA或者SGA设置不合理导致内存不足、PCTFREE值设置不合理导致的行链接、热点块等等。作为一个DBA应该实时的监控系统,然后找出问题,再分析问题,最后解决。真正有难度的是找出问题所在,对于大多数的问题,只要经验足够都是很好解决的。有经验和没经验主要区别就在于定位问题的速度。

这篇文章浅谈下Oracle性能调整工具。现在常用的工具如下:

  • OEM,实时的Web性能监视
  • 第三方生产的工具,比如SpotLightOn Oracle
  • 反映数据库运行状态的视图
  • 收集某段时间的性能数据,比如Statpack,9i默认使用
  • 收集某段时间的性能数据,比如AWR/ASH,10G及其以后默认使用
  • 其他工具,比如DRA

下面就我目前使用过的工具来谈谈这些工具的对比。首先,OEM作为一款网页版的性能监控工具,直观方便,对于初学者来说却是是一个比较好的选择。OEM可以生成AWR或者ASH报表,很多操作只是点点鼠标就可以完成。要相信,任何事物都有双面性,有利肯定有弊。方便的后果就是你要付出很多代价。第一,基于Web界面的OEM很占内存,对于一台服务器来说这绝不能容忍;第二,OEM无非是把一些可以使用命令行修改的参数或者其他的操作通过页面显示,每一个操作都是对应着一条语句的,从点鼠标到真正的执行需要经过很多流程,这样的话执行的效率会相当地低,并且很多操作不能及时地看到,其宣称的实时性只不过是相对而言;第三,使用OEM太业余,不要跟我说只要达到目标什么都可以,有更好的工具为什么不用?然后,反应数据库运行状态的视图相当有限,操作略显麻烦。其次,Statpack使用需要额外的表空间存放收集数据,生成报表操作还需要先创建Statpack,然后生成快照,最后还需要调用生成报表脚本。最后,AWR或者ASH,这个方法是强烈推荐使用的,对于Oracle性能调优已经足够使用了。出现问题后生成快照,然后调用awrrpt.sql生成AWR报表,调用ashrpt.sql生成ASH报表,选择报表类型,快照点,如果选择的是html格式(实际上工作中一般都是选择的是此格式)接着使用浏览器打开查看,进行分析,就可以得到数据库在这一段时间是否有性能问题。当然分析AWR或者ASH报表需要对里面的每个项有深入的了解,同时要求对Oracle体系结构耳熟能详。AWR报表里面的内容相当丰富,如果你只想优化SQL,可以使用ASH报表。

Oracle Performance Tuning Tools

性能调优是一门相当庞大的学问,要知道怎样调优,为什么要这样调优,这个就是一个厚积薄发的过程。

–EOF–

原文地址:微信公众号文章

题图来自:Google Images

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)