Oracle-AWR的使用

内容来自课堂整理、参考网络资料星球上最详细的AWR解析Oracle AWR报告指标全解析
本文采用的命令和awr报告-使用的是Oracle 11G。

在正文开始前,首先你得知道AWR是什么,它可以解决什么问题,再判断你需不需要学习,如你需要,则进一步学如何使用AWR;反之,就不要浪费时间啦。

  1. awr 概念
    awr 全称automatic Workload Pepository,帮助DBA迅速定位性能问题,oracle10G后出现,是Oracle运行过程中的信息收集工具。表现形式为:html/txt式的数据报告。
    awr存放在sysaux表空间中,默认保留7天的快照,每隔1小时生成一次快照。(采样时间和保留天数是可修改的-请参考)
  1. 你使用现在/将来会使用到Oracle吗?-如不会,本文和你无关
  1. 你现在/将来-需要解决定位Oracle性能问题吗?-如不会,本文和你无关

awr报告生成和awr基线报告,请参考

  1. awr使用策略
    方法一(抓主要矛盾,解决主要问题)
    拿到awr报告后,不建议从头看到尾,请先找问题,然后再根据问题-判断可能是因为什么引起的,然后去追踪、验证并定位问题。
    一份awr报告在手,请先看“Top 5 Timed Foreground Events” ,该部分显示了系统中最严重的5个等待事件,请根据具体的等待事件去排查、分析问题。
    Oracle的性能问题,最终都体现在SQL和配置上,SQL可单独拿出,通过执行计划来分析,进行优化;配置则可通过参考值/经验值,根据实际资源环境进行调高/调低。
    方法二(对比分析法)
    1)在系统运行正常时,使用awr生成一个基线报告。
  1. 当可能有问题时,再生成一个awr报告。
  2. 将当前报告和基线报告对比。
    4)分析两份报告中不一样的地方,定位性能问题。
  1. awr报告详解和关联关系
    awr报告由头部信息、摘要报告、主要报告三大块组成。
    头部信息:确定oracle基本环境信息和报告数据范围。
    摘要报告:是发现问题的起始点,它显示性能数据的统计信息,以便我们通过参考值/经验值去判断是否存在问题。
    主要报告:是用来定位问题的,使用它能"摘要报告"中的问题和具体SQL一一对应上。

3.1 awr 报告头部信息
头部信息:确定oracle基本环境信息和报告数据范围
表格1用途:同一表象错误,会因版本和环境不同,处理方式随之不同。
当问题已定位清楚后,确定解决方案时,需要考虑用到什么环境和版本。重点关注:Release、RAC。

报告头部信息.jpg
表格2用途:操作系统环境,平台、Cpu、Core、Memory可在配置优化时参考。
重点关注表格3

  1. Cursors/Session-每个session打开的游标数。当打开游标大于设置值时,会有ora_1000错误,解决之类问题:优化SQL、改大游标值。
 SQL> show parameter open_cursors;
 NAME                    TYPE    VALUE
 open_cursors                integer     300
 SQL> ALTER SYSTEM SET open_cursors=300   SCOPE=MEMORY;
  1. DBTime 在这个时间段里所有进程消耗时间的总和,数值越大 oracle越忙,如果DB Time远远小于Elapsed时间,则说明数据库比较空闲。
DB TIME=
DB cpu + Non-Idle Wait + Wait on CPU queue
干活时间+非空闲等待(IO、内存、网络)+等待有空闲CPU的时间
AAS= DB time /Elapsed Time  ---(值越大越忙)
某个时间点上占用CPU或者处于非空闲等待的session 称之为活跃

举例:2个CPU,2个session,无空闲等待,都在干活,工作了60分钟,DBtime=602=120 ,AAS=120/60=2
2个CPU,3个session,无空闲等待,都在干活,工作了60分钟
DBtime=60
2 + Wait On CPU queue(60)=180 ,AAS=180/60=3

3.2 摘要报告
摘要报告中8个表格,分别为Cache Sizes、Load Profile、Instance Efficiency Percentages (Target 100%) 、Shared Pool Statistics 、Top 5 Timed Foreground Events、Host CPU (CPUs: 24 Cores: 12 Sockets: 2) 、Instance CPU 、Memory Statistics ,重点关注:Top 5 Timed Foreground Events和Load Profile。

  1. Top 5 Timed Foreground Events
    Top 5 Timeed Foreground Events.jpg
    在调优时,我们期望用最少时间/改动最小-达到最大的效益。
    DB CPU:不是等待事件是工作时间。
    direct path read 等待事件分析

情况1:大量的磁盘排序操作,无法在排序区中完成排序,需要利用temp表空间进行排序。
情况2:大量的Hash Join操作,利用temp表空间保存hash区。
情况3:SQL语句的并行处理
情况4:大表的全表扫描,在Oracle11g中,全表扫描的算法有新的变化,根据表的大小、高速缓存的大小等信息,决定是否绕过SGA直接从磁盘读取数据。

  因In-memory Sort %:100% 则排除情况1,不存在磁盘排序。
  在实例活动统计table scans (direct read) 39,001、table scans (long tables) 45,886 ,85%表使用的是直接路径读取(物理读),因此可判断出情况4引起该问题的原因。
  在load Profile中Physical reads(物理读): 14,179.6 
  每秒磁盘读IO=14,179.6*8/1024=110M ,IO很繁忙,可能引起数据库性能下降。

由于前面的判断是物理读很高引起了数据库的性能问题,需要关注引起大量物理读的SQL语句,以下列出的是Physical reads 最高的SQL语句
SQL ordered by Reads.jpg

找到具体SQL后,就是优化的事情啦,这里不做阐述。

  ** log file sync**
  等待时间发生在redo log从log buffer写入到redo log期间。
 正常情况下,log file sync的平均等待时间是小于5ms的,这里是297ms。 引起redo log的是DML语句,需关注user commit。 ![log file sync.jpg](http://upload-images.jianshu.io/upload_images/1211247-0973a594596d861c.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)                             引用tanel Poder的图 ![log_file_sync_1.jpg](http://upload-images.jianshu.io/upload_images/1211247-435014b38d233443.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

log file parallel write 也高时,通常是物理磁盘IO的问题。

情况1:频繁提交
处理方式:消除不必要的提交,事务要么全部成功,要么全部失败
情况2: 缓慢的I/O系统
处理方式:较高的IO吞吐良可以改善log file sync和log file parallel write事件的平均等待时间。将日志文件放裸设备上或绑定在RAID 0或RAID 0+1中,而不是绑定在RAID 5中。
情况3:过大的日志缓冲区
过大的日志缓冲区也可能延长log file sync等待。大型的日志缓冲区减少后台写入的数量,允许LGWR变得懒惰,并导致更多的重做条目堆积在日志缓冲区中。同时可以调整参数_LOG_IO_SIZE参数,其默认值是LOG_BUFFER的1/3或1MB,取两者之中较小的值。换句话说,你可以具有较大的日志缓冲区,但较小的_LOG_IO_SIZE将增加后台写入,从而减少log file sync的等待时间。

  1. load Profile
    显示数据库负载信息,将它和基线数据时更具有参考价值,两者相比较,如每秒或每事务的负载变化不大,说明应用运行比较稳定。单个数据并没有一个所谓“正确”的值,会有些经验值/参考值,如Logons大于每秒1~2个、Hard parses大于100、全部parses超过每秒300表明可能有争用问题。
    Load Profile.jpg
    redo size 单位byte,1M以上表示繁忙。用途:估算DML量、估算单个事务的大小和频率-当单个事务的数据量大时可能是OLAP。
    因数据库是先写redo日志再操作的,当日志量太大时就会来不及写,会出现checkpoint not complete,此时增加redo数量和加大切换量能起到缓解作用。
    增加IO速度:在log file sync的错误时 可能原因数据文件和redo log 在同一磁盘,导致IO下降。

硬解析过程
1)语法分析
2)权限与对象检查
3)是否在shared_pool 中存在
---3.1) 存在跳过4和5,直接运行,为软解析
---3.2)不存在则执行4和5,为硬解析

  1. 选择执行计划(相当昂贵的开销、为每个执行计划执行cost,比较哪个合适)

  2. 产生执行计划
    解决方式:绑定变量

    逻辑读: 消耗的是CPU资源,物理读:消耗的是IO资源

  1. 总结
    awr是一个性能数据统计的工具,但不提供具体方法,重在通过数据去发现问题,只有定位到具体SQL,才会有调优的方向。
    可以结合其他监控如top、iotop初步判断是cpu还是io问题,再用awr针对性去找问题。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容