`
caobihole
  • 浏览: 941432 次
文章分类
社区版块
存档分类
最新评论

Oracle技术支持是如何分析数据库性能问题的

 
阅读更多

Oracle技术支持是如何分析数据库性能问题的

FROM:https://blogs.oracle.com/Database4CN/

我的同事有幸参加了今年在上海的Oracle Open World,交流中有用户说我们中文的博客中跟性能相关的文章太少了。我们一贯非常重视用户的反馈,所以从现在开始我们会尽可能多的写一些大家感兴趣的话题。

调优是一个永恒的话题,贯穿于一个数据库系统的完整生命周期。在这里我们主要关注的是作为技术支持我们是如何看待调优问题的,面向的对象主要是负责维护数据库系统的DBA。这个话题国内外有很多的大牛们写了很多很牛的书了,真的很好,我们中国的Oracle爱好者在这方面也有很多很好的经验。但是,我们还是会遇到有人问如何分析数据库的性能问题?万变不离其中。下边就简单阐述一下作为Oracle技术支持是如何分析一个性能问题的。首先声明,这个不是我创造的,而是Oracle全球技术支持通用的一个方法论(听起来是不是挺吓人?)

有几个概念先要说清楚。对于用户而言,性能就是响应时间,也就是我发起一个操作,到这个操作完成的时间间隔。比如在12306买火车票,用户只关心从我开始发起买票这个操作,到什么时候我买到了。但是从整个系统的角度看就不一样了。一个三层架构的系统至少包含了客户端,应用服务器,数据库服务器。对于最终用户而言,我只知道我点了确认键后等了10分钟才跳转到成功页面,但是如果想要做优化,系统的维护者必须知道这10分钟究竟是分别花在哪一个阶段。一个典型的流程图:
客户端发起请求→应用服务器收到请求→应用用服务器发送请求→数据库服务器收到请求→数据库服务器处理请求→数据库服务器返回请求→应用用服务器收到返回→客户端收到返回

所以,这中间任何一个环节的缓慢都会造成这个请求响应的缓慢。实际上,我们还可以进一步深入分析,究竟是在某一个环节中间慢,还是两个环节在交互的时候有延迟?举个例子,如果大量的时间消耗在数据库服务器收到请求到数据库服务器返回请求,那么这个就是数据库这个环节的问题;但如果时间是消耗在数据库服务器返回请求到应用用服务器收到返回,那么就是两个环节之间的问题了。好在现在每一层都有自己的日志,通过客户端的日志我们能知道总共的响应时间,应用程序和数据库服务器的日志能知道这两层消耗的时间,加加减减就知道问题出在哪了。

好了,如果不幸问题确认是发生在数据库层(为什么总是我?!),我们该怎么办呢?从数据库的角度,响应时间是这样计算的:
响应时间=服务时间+等待时间

服务时间其实就是我们通常说的CPU时间,等待时间就比如等待I/O,等待锁等等。绝大部分时候我们都是期望响应时间要尽可能接近服务时间,因为那样CPU才是真正在干活的;等待时间是我们通常需要去减小的,因为这意味着请求在等待某些资源,而没有干活。降低响应时间实际就是降低服务和等待时间,或者说降低CPU时间,I/O或锁等待。我们今天讲的是一个大的方法论,以后有机会会继续讲一些特定场景的优化。

还有一个我想强调的是,对于操作系统而言,Oracle也是一个应用程序。我们依然需要从操作系统上获得CPU,内存这样的资源。如果操作系统有性能问题了的话,所有运行在上边的应用程序都将出问题,Oracle也不例外。当然,你可能会说我这个服务器就是数据库服务器,上边只运行了Oracle,但你能保证没有人用这个服务器下载复制电影导致带宽和I/O耗尽吗?这个真的是可能的。

嘚啵嘚说了一堆,下边真的要说说我们是怎么分析数据库性能问题的了。

+ 问题描述。我一直以为性能问题比有错误或告警报出的问题更难解决,其中一个原因就是有错误的问题描述很简单,比如我运行了一条SQL,返回了942错误。性能问题的一个难点就是到底什么是问题,好多人都只会说”我的数据库慢“或者”我的应用没有响应“,从我上边画的流程图你就能知道这样的描述真的是没有意义的,那么什么样的描述是好的呢?

- 用户看到的现象是什么样的?所有的应用都慢,还是某一条特定的SQL慢?
- 问题发生的起止时间点?现象是自己消失的还是DBA手工干预了?DBA做了什么操作?
- 问题发生的频率?很多性能问题都是有规律可循的。
- 发生问题的时候有什么特殊的操作?对一张表添加了一个列?
- 应用程序的负载是否有变化?比如正好是早晨刚开门时的业务高峰期?
- 是否最近做过什么变更?比如上了一套新的应用?数据库刚打了一个补丁?操作系统加CPU了?

回答了这些问题,说不定你自己也找到问题的原因了。如果你不说,技术支持,尤其是远程技术支持,是不会知道这个系统的背景的。多说一句,不光是使用Oracle技术支持要这样,大家在论坛或社区问问题的时候也要遵循这个原则,含糊的问题只能得到含糊的回答。

+ 问题描述清楚了,下边该我们技术支持来验证问题到底是不是这样的了。你可能又会说你就是不相信我们呗,亲,真的不是这样的。要知道如果一个问题的描述都是错误的话,之后的分析再怎么正确也是徒劳的。我们要避免这种情况,就算它只有万分之一的可能,因为它会极大的浪费我们的精力。那么怎么验证呢?
- 对于整个系统的性能问题,大家都知道AWR/ASH report,但其实你还要提供一份基线作对比。嗯,你可能会说如果我是新上的系统呢?好吧,我只能说我们尽力而为,因为调优无极限,你要是就是想拿能并发100个用户的系统并发10000个用户我也没办法。
- 对于某条SQL语句的问题,大家都知道SQL_TRACE,同样,我们要基线。一条从来都没有快过的SQL可能真的需要应用程序开发者看看是不是真的要这么写了。

+ 分析问题。基于自上而下的原则:
- 操作系统的性能有没有问题?给我看看OSWatcher的输出呗(MOS文档1526578.1,中文的哦)
- 整个数据库的性能有没有问题?AWR/ASH。对于整个数据库的性能问题,我的原则是看有问题时消耗最多DB Time的是什么类型,当然,这个是基于基线的,有的系统可能物理I/O永远是占用DB Time最多的部分,但不见得有问题。
- 数据库hang住了?hanganalyze和systemstate dump。我们有个工具叫HANGFG(MOS文档362094.1),你就不用手工输入那些复杂的命令了。
- 只是某条语句有问题?看看SQL_TRACE吧

+ 解决问题。一旦问题的原因定位到,找一个最合适的解决方法实施就好了。对于性能问题,调优有时是渐进的,你可能需要调调这,改改那,最后彻底解决问题。我理解大家做一次变更走流程很麻烦,我们也会尽可能尽量一次性将需要做的变更都找到,但真的不能百分百保证。

综上,分析一个数据库性能问题,我们需要
- 一个清晰准确的问题描述。
- 足够的诊断信息,推荐MOS文档1549179.1 - 最佳实践:针对性能问题的主动型数据收集,也是中文的。

当然,最好所有问题都消灭在萌芽中(技术支持不会失业吧。。),推荐MOS文档1549184.1 - 最佳实践:主动避免数据库和查询相关的性能问题。

好了,今天就和大家说这么多。10月16号我们有个在线讲座关于数据库性能的(上一篇博客),欢迎各位捧场:)


后续的讨论可以到这里继续

分享到:
评论

相关推荐

    Oracle数据库学习指南

    21.监控数据库性能的SQL 22.简单实现数据库表空间的备份或迁移 23.简析REDO LOGFILE 24.理解和使用Oracle 8i分析工具-LogMiner 25.哪些初始化参数最影响Oracle系统性能 26.你的SQL语句在什么情况下使用...

    Oracle.10G.数据库系统教程

    您的应用可以完全享用到 Oracle数据库的杰出的性能、安全性和可靠性,从单节点的数据库(SE1 可以支持到两个处理器) 到RAC集群数据库服务器 (SE only,四个处理器),您付出的成本都要低于 SQL Server." 二、关键技术...

    Oracle大型数据库系统在AIXUNIX上的实战详解.part1

    《Oracle大型数据库系统在AIX/UNIX上的实战详解》以AIX UNIX为主线、其他LJNIX为参照,描述了Oracle系统在构架、管理、容灾备份、集群化实施、性能分析优化等诸多方面,并针对Sybase ASE进行对比,论述了Oracle在AIX...

    Oracle 10g 网格数据库研讨会33个PPT下载

    Oracle数据库10g:数据库技术的一次革命 Oracle 数据库 10g极大提高可用性和网格计算能力 Oracle 数据库 10g性能概述 企业管理器10g-使网格计算成为现实 Oracle HTML DB最佳实践 Oracle XML DB 简化 XML 管理 ...

    基于oraclespatial的遥感影像数据库系统设计与实现

    围绕它进行可扩展的空间计算而不用担心性能和安全问题。在本项目中,基于 Spatial这个组件设计出的空间数据库,既能保证对空间数据的安全存储,又可伸 缩、扩展的数据库持久层。 在对栅格图像的前端操作上,采用了...

    ORACLE表连接方式分析及常见用法

    数据仓库技术是目前已知的比较成熟和被广泛采用的解决方案,用于整和电信运营企业内部所有分散的原始业务数据,并通过便捷有效的数据访问手段,可以支持企业内部不同部门,不同需求,不同层次的用户随时获得自己所需...

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    11.5.2将物理Standby数据库转换为快照Standby数据库 11.5.3将快照Standby数据库转换为物理Standby数据库 11.6主备数据库切换 11.6.1 Switchover切换 11.6.2 Failover切换 11.7本章小结 第12章 RAC备份 12.1...

    什么是网格数据库

    RAC(Real Application Cluster,真正应用集群)是Oracle9i数据库中采用的一项新技术,也是Oracle数据库支持网格计算环境的核心技术。它的出现解决了传统数 据库应用中面临的一个重要问题:高性能、高可伸缩性与低价格...

    2013 Oracle 技术嘉年华演讲PPT汇总下载

    2013 Oracle技术嘉年华:OWI性能诊断_魏兴华.pdf 2013 Oracle技术嘉年华:QData数据库一体机解决方案_罗春.pdf 2013 Oracle技术嘉年华:RAC failover scenarios_Kamran.pdf 2013 Oracle技术嘉年华:RDBMS Forensics ...

    Oracle 内部培训资料:Oracle 10g 培训材料(18个PPT)

    Oracle数据库10g-支持全球化特性的平台.ppt Oracle数据库10g-网格数据库.ppt Oracle数据库10g-自我管理数据库.ppt Oracle数据库10g中新的SQL和PLSQL功能.ppt Oracle数据库10g中的数据泵.ppt Oracle数据库10g安全性...

    基于ORACLE数据库的全文检索技术的安装和使用方法

    文中主要讲述了ORACLE全文检索技术的安装和使用方法,方法非常简单,进行简单的试用也不存在问题,但是性能测试方面不是很理想,但是由于同我们目前的系统软件架构相符合,在目前的功能中应用应当不存在技术和性能...

    Oracle数据库10g是如何彻底改变可用性并支持网格

    Oracle数据库10g将使您可以充分利用网格企业计算的...之后我们将对Oracle数据库中采用的技术进行分析,并重点介绍Oracle数据库10g新功能。这些功能可以帮助避免昂贵的停机时间,并能够从无法避免的故障中快速进行恢复。

    oracle数据库dba管理手册

    第一部分 数据库体系结构 第1章 Oracle体系结构 1 1.1 数据库概述及实例 1 1.2 数据库 1 1.2.1 表空间 2 1.2.2 文件 2 1.3 实例 3 1.4 数据库内部结构 3 ...第14章 UNIX上的Oracle联网技术 385 14.1...

    鲲鹏BoostKit数据库使能套件 Oracle迁移联合解决方案介绍

    ● 技术支持工程师 ● 维护工程师 TaiShan服务器是华为新一代数据中心服务器,基于华为鲲鹏处理器,适合为大数据、 分布式存储、原生应用、高性能计算和数据库等应用高效加速,旨在满足数据中心多 样性计算、绿色...

    Oracl技术资料(EBook)

    21.监控数据库性能的SQL 22.简单实现数据库表空间的备份或迁移 23.简析REDO LOGFILE 24.理解和使用Oracle 8i分析工具-LogMiner 25.哪些初始化参数最影响Oracle系统性能 26.你的SQL语句在什么情况下使用全表...

    oracle数据库设计规范.doc

    2、概述 本文主要根据oracle9i以上数据库性能特点,描述数据库环境配置、数据库物理 设计、数据库逻辑设计、视图、存储过程、应用程序设计等方面的设计规范。 3、数据库物理设计原则 3.1、数据库环境配置原则 操作...

    数据库系统-招标参数---模板.doc

    " " "数据库性能 "数据库提供数据表分区能力的商务和技术许可,以" " " "便支持海量数据表的需求。 " " " "具有支持并行操作所需的技术,如并行装载,并行" " " "查询,并行创建索引等 " " " "提供分区索引视图功能 ...

    Oracle_RAC安装配置指导书

    RAC,全称real application clusters,译为“实时应用集群”, 是Oracle新版数据库中采用的一项新技术,是高可用性的一种,也是Oracle数据库支持网格计算环境的核心技术。 RAC提供的优缺点: 优点  Oracle RAC主要...

Global site tag (gtag.js) - Google Analytics