oracle大型数据库系统在AIX/unix上的实战详解》讨论32:Oracle10g/11g数据库性能的诊断和监控方法论  文平

还是继续年前的话题,继续讨论 Oracle10g/11g中数据库性能的诊断,对应的监控方法论。10g/11g中提供的ADDM工具很好,但绝非万能,还在使用。正确的方法论尤为重要,如何使用之?

当一套Oracle数据库应用系统发生性能问题时,必须首先进行准确和恰当的诊断,并在进行切实调整时,了解问题出现的节点和位置。对一套系统历史状态、现行状态的了解程度,加上本身作为一个数据库 DBA 的工作经验,这会有助于快速定位问题,至少在相当大的程度上增加了成功的可能性。

对于一套oracle系统的性能问题,通过统计数据分析并得到结论是不二法门。Oracle10g以后版本中增加的自动工作量资料档案库(AWR)记载了关于性能的历史数据,与此功能对应,自动数据库诊断监视器( ADDM )是一个分析AWR数据,然后依据Oracle的知识库定位性能问题的产程成因,并提出推荐的解决方案。AWR在这个环节中的作用是历史性能数据的抓取和保存,ADDM是分析AWR数据的工具和参谋。

具体而言,每次AWR快照抓取,其后即尾随一次ADDM分析,并且分析结果存储在数据库表中。我们可以通过Oracle企业管理器(OEM)查看分析结果,或者通过SQL*Plus直接查看报表。

具体实施中,性能调整人员首先要读取ADDM输出结果,并分析ADDM给出的结论。ADDM提供了相对准确的数据库分析报告,所谓相对准确,是指ADDM所包含的技术含量,可能大多数情况下比你提供的多。ADDM具有如下特点:

  • 每小时自动执行的自动性能诊断报告
  • 汇集了Oracle性能诊断和调整方面多年的智慧
  • 以时间为基础的量化问题诊断及提供准确的方案
  • 有助于识别出根本原因,而非基于表象的结论
  • 推荐方案针对根本问题,而非表象问题
  • 数据库性能诊断对系统性能影响微小,可忽略不计

ADDM功能强大,但还是基于一个根本性的认同:性能调整时一个迭代过程。其含义包含如下方面:当你解决了一个性能瓶颈时,系统性能问题可能在另外一个位置又出现了,就象在下面的图中,我们解掉第一把锁,第二把锁随后显露出来:

Oracle10g/11g数据库性能的诊断和监控方法论_oracle

从结果上看,上图中的改进,其直接结果将不明显,因为,还有第二把锁在发挥瓶颈作用。因此,对于ADDM的使用,或者任何其它优化工具,不能期待一次性解决问题,这将是一个循环往复的过程。

自动数据库诊断监视器( ADDM )是Oralcle新版本人性化设计、开发的一个典型案例。究竟,Oracle的工程师更了解自己多一些。ADDM提供了AWR取样期间任何时间段内对统计数据进行分析并提供调整方案的能力。

在Oracle10g中,关于性能调整指标的确认,和Oracle9i以前版本不同。Oracle10g提出了一个综合的性能度量指标:DB time。DB 时间是数据库服务器在处理用户要求时花费的累积时间。它包括所有激活(非空闲)用户会话的等待时间和CPU时间。性能分析的目标是减少DB time度量时间。DB time可以通过V$SESS_TIME_MODEL 和V$SYS_TIME_MODEL 视图查询。

但是一点需要注意,ADDM的目标在于系统整体,并不在于调整会话个体的相应时间。如果希望调整单个用户连接会话,则需要使用端对端的应用跟踪技术。

通过减少DB time,数据库服务器将降低处理当前载荷的工作压力,进而在使用同样资源情况下,承受更大的载荷压力。ADDM的诊断报告中,DB time的使用情况按照从大到小的顺序排列,排列在前面的操作,是系统性能瓶颈的可能性最大。

ADDM报告的问题归类如下:

  • 系统CPU使用是否受Oracle或其它应用约束
  • Oracle使用的操作系统内存部分如SGA、PGA大小是否足够
  • I/O子系统的执行是否存在问题
  • 系统中是否含有高消耗的SQL语句
  • 系统中是否含有高负载的PL/SQL块、Java块
  • RAC(真正应用集群)中全局缓存结构中存在哪些热块和对象、其节点间内部连接和通信是否存在问题
  • 应用中是否存在低效的用户连接、SQL解析、锁问题
  • 数据库配置是够存在问题,是否日志文件大小不当、检查点过于稀疏或紧密等
  • 多用户访问下是否存在并发性问题,是否存在缓存块忙、争用等问题
  • 系统中热点对象、热点SQL有哪些

ADDM除去标示了系统问题所在,同时也标示了系统哪些方面不必进行性能上的考虑。这样做大大节省了调优工程师阅读报告上所需花费的漫长时间,提高分析效率。

除问题诊断外,ADDM还推荐了可能的解决方案,这些方案可能涉及:

  • 硬件级别的调整:例如,增加CPU、内存、调整 I/O子系统
  • 数据库级别的调整:例如调整数据库系统初始化参数放置
  • 应用模式对象调整:例如,进行表的分区演化,使用ASSM管理表空间使用
  • 应用系统的调整:例如改变序列号产生办法、使用绑定变量等技术
  • 使用其它顾问:例如推荐使用Oracle10g带来的顾问工具来调整段、SQL、还原等操作

未完,待续,参见 www.usedb.cn ,wenping