Oracle性能调整与优化第一部分(一)

日期: 2008-12-10 作者:Steve Callan翻译:黄永兵 来源:TechTarget中国 英文

  Oracle性能调整是一个范围比较广且有点复杂的主题,普通DBA面对的最大的问题是从哪里开始以及该做些什么。你知道的所有信息可能是有人(一个用户)报告了一个关于应用程序或查询性能下降的问题,当你面对这样的问题时该从何下手呢?

  Oracle的调整方法

  对那些已经取得了Oracle 8i性能调整认证考试的人而言,有一个试验区域实验Oracle的调整方法,当Oracle 9i发布时Oracle强调了这个方法有所改动,这个方法从8i到9i/10g发生一些变化,两个方法都不完全一样,它们都有各自的优势和缺点,在Oracle 8i中,由下面的步骤组成:

  1、调整业务规则

  2、调整数据设计

  3、调整应用程序设计

  4、调整数据库逻辑结构

  5、调整数据库操作

  6、调整访问路径

  7、调整内存分配

  8、调整I/O和物理结构

  9、调整资源连接

  10、调整基础平台

  Oracle 9i的基本原则性方法,原则即优先级顺序:

  优先级描述

  第一 清楚地定义问题,然后指定一个调整目标

  第二 检查主机系统和搜集Oracle统计信息

  第三 将识别的问题与Oracle 9i提供的通用数据库性能方法(版本1)/数据库性能计划(版本2)进行对比

  第四 使用第二步搜集的统计信息获得一个在系统上可能发生了什么的大概设想

  第五 标识所做的改动,然后实施那些改动

  第六 确定是否符合第一步中确定的目标,如何符合就停止调整,如果还不符合就重复第五和第六步直到符

  合调整目标

  Oracle 10g R2性能调整指导认同所有Oracle性能改善方法的处理过程,步骤已经扩展了,但是总体来说还是保留了一些相同的地方。

  1、执行下面的初始化标准检查:

  a.从用户那里获取真实的反馈,确定性能设计范围和性能目标,以及将来的性能目标,这个过程对未来容量的规划很关键。

  b.在性能好和差的时候,都要获取全套操作系统,数据库和从系统获取应用程序统计信息,如果这些不可用,就获取任何有用的信息,丢失统计信息与丢失犯罪证据类似:使得侦探工作更困难并且更浪费时间。

  c.对所有涉及用户性能的机器进行操作系统健全检查,通过对操作系统的健全检查,你可以查看被完全利用的硬件和操作系统资源,列出所有过度使用的资源作为后面分析的症状,此外,检查所有硬件错误或进行诊断。

  2、检查前十个Oracle常见错误,并确定这些是否可能成为真正的问题,把它们列出来作为后面分析的症状,因为它们代表了大多数可能的问题,ADDM自动检查并报告前十个问题中的九个。查看第6章“自动性能诊断”【http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14211/diagnsis.htm#g41683】和“Oracle系统中发现的前十个错误”【http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14211/technique.htm#i11221

  3、建立一个在系统上发生了什么的概念模型,使用症状作为提示理解是什么导致了性能问题,查看“一个性能概念模型的简单决策过程”【http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14211/technique.htm#i11199

  4、计划一系列补救动作和预先考虑系统的工作情况,然后按顺序应用将使应用程序最大受益,ADDM产生的每个建议都包括了预期的受益分析,不幸的是,系统停机时可能会阻止这样一个严格的调查方法,如果同时应用了多个修改,那么要尝试确保它们是被隔离的,以便可以独立证明每个修改的影响。

  5、确认所做的修改是否达到了预期的作用,并了解用户对性能的感受是否有所改善,另外,寻找更多的瓶颈,继续改进概念模型直到你对应用程序的理解更准确。

  6、重复后面的三步直到达到性能目标或由于其他约束而变得不可能。

  变化是问题的一部分

  从一个自顶向下的构造方法到一个以原则为基础的“使它停止伤害”的方法是问题的一部分,搜集统计数据显得很重要因为你如何知道你已经对问题做了改进(或使问题更糟)?对其他方法,你仍然要保留两个最初的问题:我要寻找什么以及我如何使它变得更好?如果结构化方法使你头疼,那原则性方法只会添加混乱。

  能够帮助初学者(不承诺:我远远还不够专家的资格)评估(配置、终端和调整)的调整项目清单:

  ·调整缓冲区高速缓存(Buffer Cache)

  ·调整重做日志缓冲区(Redo Log Buffer)

  ·调整共享池内存(Shared Pool Memory)

  ·优化数据存储器

  ·优化表空间

  ·调整Undo段

  ·检测锁争用

  ·SQL调整

  这些调整措施使得Oracle RDBMS和实例从上到下都更漂亮了,本文剩下的部分将集中在SQL调整或更精密地预防慢速SQL被执行,这些不是同一件事吗?大概是吧,但是在开发方面一个通用的方法是编写执行得够好够块的语句,每条语句不用是最佳的,但是某些思想必须体现在代码中,你没有时间优化成百甚至上千的SQL语句,但同时你可以遵循一些指导方针,以避免常见的错误和不良的编码习惯。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐