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

从结果上看,上图中的改进,其直接结果将不明显,因为,还有第二把锁在发挥瓶颈作用。因此,对于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…

转载于:https://blog.51cto.com/wenping/281669

Oracle10g/11g数据库性能的诊断和监控方法论相关推荐

  1. 用 Navicat for Oracle 管理 Oracle10g/11g 数据库

    Navicat for xxx 是一个优秀的数据库管理客户端,有 MySQL.Oracle 等版本.建议大家最好用 Enterprise 版本,功能全面一些,但较之于免费的 Lite 版,企业版可是要 ...

  2. oracle 监控内存和硬盘的排序比率_最好使它小于 .10,监控数据库性能的SQL

    监控数据库性能的SQL 1. 监控事例的等待 select event,sum(decode(wait_Time,0,0,1)) "Prev", sum(decode(wait_T ...

  3. oracle数据库性能awr,常见问题:如何使用AWR报告来诊断数据库性能问题

    常见问题:如何使用AWR报告来诊断数据库性能问题 (Doc ID 1523048.1) Last updated on FEBRUARY 03, 2019 适用于: Oracle Database - ...

  4. 5. SQL Server数据库性能监控 - 当前请求

    5. SQL Server数据库性能监控 - 当前请求 原文:5. SQL Server数据库性能监控 - 当前请求 对于在线运行的系统,当前数据库性能监控,通常监视以下几点: (1) 是否有阻塞 ( ...

  5. sql server express 并发数的限制_阿里数据库性能诊断的利器——SQL执行干预

    概述 在业务数据库性能问题诊断中,如果发现一个业务性能很差跟某个SQL有关,应用连接池几乎被该SQL占满,同时数据库服务器上也不堪重负.此时情况很紧急,业务改SQL重发布已经来不及了,运维能选择的操作 ...

  6. loadrunner录制事件为0_Oracle数据库性能监控|LoadRunner 中配置监控Oracle

    Oracle 是目前世界上大型应用系统广泛使用的数据库,Oracle 数据库产品为财富排行榜上的前1000 家公司所采用,许多大型网站也选用了Oracle 系统.Oracle 内部结构比较复杂,如图8 ...

  7. java监控数据库性能_Java:GraalVM数据库流性能

    java监控数据库性能 GraalVM是JVM块的新成员. 它是一个开源虚拟机,能够同时运行多种编程语言,例如Java,Rust和JavaScript. GraalVM还具有一个新的内部代码优化器管道 ...

  8. jdbc连接oracle_Oracle数据库性能监控|使用SiteScope 监控Oracle

    LoadRunner 除了可以用本地监控器来收集Oracle 的性能数据外,还可以整合SiteScope 对Oracle 进行监控. 根据SiteScope 帮助文档,需要把oracle 的jdbc ...

  9. 监控长时间运行的查询(监控数据库性能的SQL )

    查询v$session_longops动态性能视图可以查看运行时间大于6秒的查询,如果想让运行时间大于6秒的查询被数据库引擎收集,必须满足以下条件:1 参数timed_statistics或sql_t ...

最新文章

  1. 家电 计算机和电讯领域 英语,网络通讯及计算机英语词汇.doc
  2. Python中出现:RunTimeError:implement_array_function method already has a docstring.异常解决
  3. IDEA创建工程时 报错 Initialization failed for 'https://start.spring.io'
  4. linux cat 重定向,Linux命令(cp mv cat和重定向)(示例代码)
  5. 熬夜整理出40张可视化大屏模板,不敲一个代码就能直接套用
  6. 镜像电流源特点_MOS管电压型静电击穿特点
  7. 游戏开发之拷贝构造函数,即复制构造函数(explicit关键字及拷贝构造函数的调用时机)(C++基础)
  8. 基于C#在Mongodb的Skip-Limit和Where-Limit的分页对比 并且含mongodb帮助类的源码
  9. mysql2008无法启动_SQL Sever2008r2 数据库服务各种无法启动的解决办法
  10. php cookie start,有关php session和Cookie问题session_start开启后做什么事?
  11. 计算机网络经典面试题:在浏览器中输入URL并按下回车后会发生什么?
  12. css div背景图大小,divcss如何改变背景图片大小
  13. Qt是什么?有哪些优势用于图形界面开发
  14. 迭代器、模块的简单总结
  15. thinkpad x250装黑苹果教程_Thinpad T系列安装MAC OS 黑苹果教程
  16. Background Suppression Network for Weakly-supervised Temporal Action Localization
  17. 利用高斯(Guass)算法求解2维的SVP向量
  18. 如何用妙记多 Mojidoc 设置子弹笔记
  19. 很不错的PERL管道应用
  20. 【MQ笔记】聊一聊空间(线性空间、赋范空间、度量空间、内积空间、欧氏空间、酉空间)

热门文章

  1. Java编译过程、c/c++编译过程区别
  2. Codeforces Beta Round #75 (Div. 1 Only) B. Queue 线段树。单点更新
  3. qt中Qtableview的用法
  4. C# 多线程修改控件时遇到:创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke
  5. 指针的动态初始化malloc与销毁free
  6. windows重绘机制原理
  7. C/C++函数调用的几种方式总结
  8. IOS开发基础之UI基础的团购源码完整版本
  9. javascript php 性能,JavaScript知识点总结之如何提高性能_javascript技巧
  10. tomcat jar包编译后变成文件夹_tomcat学习|tomcat中的类加载器