简介:
在oracle数据库中,有两个非常实用的自带监控工具EM(Enterprise Manager)和AWR(Automatic Workload Repository)。其中,通过AWR报告可以生成易于阅读的监控报告,可协助进行性能问题的诊断和分析。
本期将介绍一些AWR报告的基本使用和在性能问题诊断中的应用。
 什么是AWR:
      从oracle 10g开始,使用名为GATHER_STATS_JOB的计划任务来收集AWR的统计数据,AWR报告中收集了许多不同的统计数据,包括等待事件、各种系统级和会话级的统计数据及使用较多资源的SQL语句相关的信息。
    在默认情况下,Oracle数据库后台进程会以一定间隔(一小时)收集系统当前状态镜像,并且保存在数据库中,默认的保留时间是8天,此策略可根据实际情况进行调整。在特殊的时间点,如测试执行前后,可以通过手动创建快照的方式来增加快照。在生成AWR报告时,通过快照点来选择生成指定时间段的统计报告。
 AWR的生成:
一、手动产生AWR报告
1)在Oracle数据库服务器上,用SYSDBA身份登入sqlplus。
2)运行脚本
在sqlplus中输入awrrpt执行命令。
@?/rdbms/admin/awrrpt.sql
3)输入报告参数
a) 选择要生成AWR报告的类型,可选择text类型和html类型,输入html(默认)。
b)报告涉及天数范围
选择要生成报告的日期是多少天的记录。输入天数后,(输入1,则表示要生成今天0点开始到目前的时间段内的报告;输入2,则表示要生成昨天0点开始到现在的时间段内的报告;以此类推。)界面显示出改时间段的数据表格,每个时间点对应一个snap id,间隔时间oracle默认为1小时。
c)输入要生成报告的开始和结束snap编号。
d)确定报告名称。
不输入直接回车,系统会自动生成一个默认名字的报告。
e)生成报告。
提示报告输出结束后,AWR报告存放在指定目录(用sqlplus登录oracle数据库的目录)下 。
案例分析:
现象:
 某交易单场景,发现数据库CPU平均使用率达近90%。本案例数据库为12Core,从Instance CPU上看,oracle占用的CPU占服务器中CPU资源(89.9%)的99.5%。

分析过程:
    为了定位数据库CPU过高的问题,测试过程中使用AWR报告,观察数据库的使用情况:
1)先整体查看报告头信息(header)和性能指标(Buffer Nowait,Buffer Hit,Library Hit,Execute to Parse,Parse CPU to Parse Elapsd,Redo NoWait )。
2)看Time Model Statistics,在整个sql执行时间(sql execute elapsed time)时间为15499秒中,解析时间(parse time elapsed)用了26秒,硬解析时间(hard parse elapsed time)用了26 秒,可知解析时间是花的很少的,所以可以判断出,sql的解析没有成为性能瓶颈,进一步推测,sql在获取数据的过程中遇到了瓶颈。
4)关注下负载的概要信息。数据库层面的TPS仅为1.3,TPS较低。
5)进一步分析发现,从SQL ordered by CPU Time来看,SQL id 为cjnzff37c9gr3和cq32agu0qkpd8的SQL语句,执行次数多,耗CPU较高。
6)针对这2个SQL语句,执行命令,获取sql 执行计划。(需输入SQL id)
@$ORACLE_HOME/rdbms/admin/awrsqrpt.sql
7)通过查看执行计划,对CTR_LOAN_CONT的表读取占用的cost较多,需要根据索引读取196000行数据。其中CTR_LOAN_CONT表为1200多万条数据,占用空间5888m,统计更新也较准确。部分计划如下:

8)查看 Segments by Logical Reads,96%的逻辑读都为CTR_LOAN_CONT 表的读取。最终定位为,数据库CPU过高为SQL导致。
 
处理方法:
(1)转移数据库服务器的一部分逻辑处理到应用服务器。即将数据库中的一些通过SQL判断的逻辑通过应用代码进行实现,从而适当的降低数据库服务器的复杂计算。
(2)针对XX模块仍然采用视图,但在视图中添加第三方平台作为条件过滤,并将归并方法UNION(表链接后筛选掉重复的记录再排序)改为UNION ALL(无排序去重)。
调优后效果:
(1)CTR_LOAN_CONT的表读取占用的cost从15359降低到276。
(2)数据库服务器的CPU平均使用率从89.9%降低到11.6%。

--图后续补上

[原创-性能调优]借助AWR报告分析解决oracleCPU过高的问题的更多相关文章

  1. 借助AWR报告分析解决oracleCPU过高的问题(转)

    原文地址:http://www.cnblogs.com/crystal-guoguo/p/4213458.html 简介:在oracle数据库中,有两个非常实用的自带监控工具EM(Enterprise ...

  2. 借助AWR报告分析解决oracleCPU过高的问题

    原文地址:http://www.cnblogs.com/crystal-guoguo/p/4213458.html 简介:在oracle数据库中,有两个非常实用的自带监控工具EM(Enterprise ...

  3. 性能调优案例分享:Mysql的cpu过高

    性能调优案例分享:Mysql的cpu过高   问题:一个系统,Mysql数据库,数据量变大之后.mysql的cpu占用率很高,一个测试端访问服务器时mysql的cpu占用率为15% ,6个测试端连服务 ...

  4. Java性能调优:利用JMC分析性能

    Java性能调优作为大型分布式系统提供高性能服务的必修课,其重要性不言而喻. 好的分析工具能起到事半功倍的效果,利用分析利器JMC.JFR,可以实现性能问题的准确定位. 本文主要阐述如何利用JMC分析 ...

  5. MYSQL数据库性能调优之三:explain分析慢查询

    explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句.使用方法,在select语句前加上explain就可以了. 一.explain ...

  6. sql server 性能调优之 CPU消耗最大资源分析1 (自sqlserver服务启动以后)

    一. 概述 上次在介绍性能调优中讲到了I/O的开销查看及维护,这次介绍CPU的开销及维护, 在调优方面是可以从多个维度去发现问题如I/O,CPU,  内存,锁等,不管从哪个维度去解决,都能达到调优的效 ...

  7. linux性能调优概述

    - 什么是性能调优?(what) - 为什么需要性能调优?(why) - 什么时候需要性能调优?(when) - 什么地方需要性能调优?(where) - 什么人来进行性能调优?(who) - 怎么样 ...

  8. 提高 web 应用性能之 CSS 性能调优

    简介 Web 开发中经常会遇到性能的问题,尤其是 Web 2.0 的应用.CSS 代码是控制页面显示样式与效果的最直接“工具”,但是在性能调优时他们通常被 Web 开发工程师所忽略,而事实上不规范的 ...

  9. 【总结】性能调优:JVM内存调优相关文章

    [总结]性能调优:JVM内存诊断工具 [总结]性能调优:CPU消耗分析 [总结]性能调优:消耗分析 JVM性能调优

随机推荐

  1. 【BZOJ 3133】 3133: [Baltic2013]ballmachine (线段树+倍增)

    3133: [Baltic2013]ballmachine Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 148  Solved: 66 Descri ...

  2. [BZOJ1040][ZJOI2008]骑士(环套树dp)

    1040: [ZJOI2008]骑士 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 5816  Solved: 2263[Submit][Status ...

  3. Flask请求上下文源码讲解,简单的群聊单聊web

    请求上下文流程图 群聊html代码 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  4. bzoj 3781

    又忘了给每个点标所属的块,瞬间就变成一个块了. 写莫队一定要试一下随机极限数据. /********************************************************** ...

  5. Apache之.htaccess备忘录(一)

    .htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置,也是使用apache的同学最常碰到的文件,下面罗列一些常用的知识,以备不时之需. 1 . 如何让Apache支持 ...

  6. python 3.x和2.x不同和改动

    参考于http://www.runoob.com/python/python-2x-3x.html 因为这几天换了电脑,之前电脑里装的是python2.x,因为那时候刚学的时候,很多教程都是用2.x. ...

  7. linux基础命令学习 (十)Vi

    1.vi的基本概念 基本上vi可以分为三种状态,分别是命令模式(command mode).插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:    ...

  8. QTP 10 破解 之路

    1.下载QTP 10 安装包 2.破解软件(mgn-mqt82.exe)  (阿里云云主机里执行不了,一执行CPU就99%,也没有生成lservrc) 手动创建C:\Program Files (x8 ...

  9. STM32F401

    The STM32F401 line is the entry level to the STM32 F4 series. It is designed for medical, industrial ...

  10. LM27313 (ACTIVE) 具有 30V 内部 FET 开关(采用 SOT-23 封装)的 1.6 MHz 升压转换器

    The LM27313 switching regulator is a current-mode boost converter with a fixed operating frequency o ...