频道栏目
读书频道 > 数据库 > Oracle > Oracle DBA实战攻略:运维管理、诊断优化、高可用与最佳实践
1.4.1 性能类故障的处理思路
2013-08-13 10:49:05     我来说两句
收藏   我要投稿
本书是目前Oracle数据库运维领域不可多得的一本著作,也是为数不多的既有大量实践应用案例又包含实战方法论的著作。作者根据其多年的运维诊断经验,从数据库如何创建开始,循序渐进地介绍了数据库的启动关闭过程...  立即去当当网订购

1.4 数据库性能类故障

引起数据库性能问题的原因也有很多,有兴趣的读者可以参阅第7章和第8章进一步了解。本节主要介绍当数据库发生性能故障时笔者的分析思路,以及收集现场数据的方法。只有准确地收集到了现场数据,才能分析并找到故障原因。

1.4.1 性能类故障的处理思路

处理数据库性能类故障时,笔者喜欢自上而下的分析方法,即先宏观地了解系统状况,然后再具体问题具体分析。以下为分析思路:

(1)了解主机的硬件情况、业务系统的拓扑架构,了解业务最近是否发生了变动。这一步通常只要简单地沟通几分钟就可以完成了解。

(2)登录到主机,查看主机的资源消耗情况(主要使用top/topas、vmstat、iostat等常见的操作系统命令)。观察主机资源的消耗情况时主要查看是否因CPU资源耗尽而产生了大量的运行队列、是否因I/O资源耗尽而产生了大量的阻塞队列,以及是否因内存资源耗尽而产生了大量的系统交换。此外还需观察是否存在消耗比较多的操作系统资源的业务进程,如果存在,则使用以下命令跟踪这些客户端进程,观察SQL的执行计划。
SQL> oradebug setospid xxx;
SQL> oradebug unlimit;
SQL> oradebug event 10046 trace name context forever, level 12;
SQL> oradebug event 10046 trace name context off;

(3)登录到数据库,查看活动状态的会话数,确认是否存在排队效应。排队效应的一个典型症状是活动的会话数量比平时高很多。

(4)查询V$SESSION_WAIT视图,查看是否有特殊的等待事件。该视图是性能问题现场诊断过程中最常使用的视图。

(5)如果是Oracle 9i,建议马上采样一份10分钟左右的6级statspack报告,这样就可以根据statspack报告中的hash_value值调用脚本?/rdbms/admin/sprepsql.sql生成SQL的执行计划了。如果是Oracle 10g以上版本,建议马上手动采样一份10分钟左右的AWR报告,同时生成一份该时间段的ASH报告。性能故障时的AWR/ASH报告中的各类统计数据没有被时间平均化,所以是处理性能问题时强有力的参考点。

(6)检查其他系统组件是否碰到了性能瓶颈,如中间件、网络等。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3.2 数据库局部性HANG处理过程
下一篇:1.4.2 怎样快速定位资源持有者
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站