oracle awr报告生成_Oracle数据库AWR报告如何收集、报告如何分析、数据库性能如何分析宝典...

      很多数据库及应用业务、操作系统资源的性能问题对于性能分析大师来说,他们往往通过收集数据库的性能报告来分析诊断,最终解决客户的性能问题。如果你想成为数据库的性能分析大师或专家,不防跟着我一起来学习以下相关的内容。

       我将以Oracle数据库的AWR报告收集与分析为例,分别介绍报告的收集方法、分析方法以及相关的培训视频分享,让大家更加容易学会上手。

Oracle数据库AWR报告收集后打开长成如下样子:

91f05457635125d75cfe50253e41b0cf.png

e95dafe8c57a9579b200c88038a71ecc.png

以上报告可见,数据库存在用户IO等待,磁盘IO能力不足,同时存在写得性能较差的SQL语句,缺少表索引等导致严重的数据库性能问题。 

AWR报告分析问题的应用场景:

分析数据库本身、SQL语句、资源性能、硬件的问题:

1.数据库执行时间过长

2.耗CPU高的SQL语句

3.物理读高的SQL语句

4.逻辑读高的SQL语句

5.数据库锁等待

6.数据库会话阻塞

7.数据库服务器磁盘读写IO能力差

8.数据库服务器内存不够用

9.数据库内存相关参数分配不合理导致性能慢

10.SQL语句硬解析过多导致性能慢

11.Oracle RAC集群组件同步等待慢

......

1.如何收集Oracle AWR报告

为了更精准分析数据库的问题,收集报告的时段建议为1,2小时,即收集问题(性能慢)发生点内的1,2小时内报告:

按以下方法进行收集:

先登录Oracle数据库服务器操作系统上,然后按以下方法进行收集:

$sqlplus / as sysdba  --以数据库SYS用户登录到数据库sql>下面进行操作

sql>exec dbms_workload_repository.create_snapshot;  --创建当前时间点的快照信息

sql>exec DBMS_WORKLOAD_REPOSITORY.AWR_SET_REPORT_THRESHOLDS(top_n_sql=>200);     --如果收集AWR报告不全,也可以考虑把top_n_sql的值改小些,如改为20,50,推荐为100,200,300,可以收集到更多的耗时SQL语句进行性能问题分析

sql>@?/rdbms/admin/awrrpt.sql

运行时要输入:enter value for report_type: html

            enter value for num_days: 输入天数,如收集当天产生的报告,则输入1,如收集前1天产生的报告则输入2,以此类推。

            自动显示该天的对应的快照id与生成快照的时间(收集功能点慢时段1到2小时数据)

            enter value for begin_snap: 输入要分析的开始快照id (如79)

            enter value for end_snap: 输入要分析的结束快照id  (如80)

            enter value for report_name: awr_report_此处写该报告生成的时间    --该报表名就是最后生成的报告的文件名称

 最后输入完,回车,开始生成报告,报告生成完,最后会显示报告存放在哪个地方及报告的文件名:

        Stopped spooling to d:\Program Files\PLSQL Developer\awr_report_201008201002.html

        Report written to awr_report_201008201002.html 

2.如何收集Oracle AWR报告的学习微视频:

https://vip.kingdee.com/school/87572971782356736 

3.如何收集Oracle AWR报告各种收集详细方法文档

http://note.youdao.com/noteshare?id=359ee8542db18ce20682391b8b3ff017&sub=73B614BBD02C4738A422FB1186F030BD   

4.Oracle数据库AWR报告如何分析培训视频(Oracle原厂大师讲解):

中级培训:链接:https://pan.baidu.com/s/1zFbI5xqLm1VKu_cikIl_tg  密码:pn2v

高级培训:链接:https://pan.baidu.com/s/19GZLZBmB913-tScP4w2jkA  密码:esjb

5.收集数据库AWR报告常见报告收集报错处理方案集:

生成Oracle awr报告时报"ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小" 最新处理方案

问题描述:

在Oracle数据库收集AWR报告,有时会出现收集的AWR报告不全且报"ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小",因信息不全导致数据库性能问题不好分析。

原因分析:

是因存在部分SQL语句很长很长,导致收集的AWR报告整体内容很长,同时要暂存到缓存区大小不够而报错。

解决方案:

方案一:收集AWR报告时先进行把AWR报告中历史的SQL语句进行截断,执行SQL>update WRH$_SQLTEXT set sql_text = SUBSTR(sql_text, 1, 1000); 这方法经验证收集AWR报告成功不报错,但会出现AWR报告中收集的SQL语句只显示1000个字节,太短了,报告中显示的SQL语句不全问题。

方案二:收集AWR报告时先进行把缓存冲区设大些,执行 SQL>set serveroutput on buffer 2560000  ,然后再收集AWR报告(以html格式收集)。 

方案三:以文本TXT格式收集AWR报告,则在收集AWR报告时,报告名称的格式改为TXT格式进行收集,报告可以收集全,但会出现收集后的报告不好解析,不好看。

方案四:如果为了更好的发现所有耗时的SQL语句,有时可能会牺牲收集的一些语句的完整性(有大部分可以通过SQL_ID查到对应完整的SQL语句,查执行计划得到完整的语句),但为了尽量可以收集到时SQL语句更全信息,可以把sql_text的更新的长度弄长些。

同时也可以以html格式进行收集,保证收集的报告好看且好分析,把报告中收集的SQL语句长度设置最大为12000,那个值也可以根据现场情况进行调整,调整为最佳的值。

收集报告前先执行SQL>update WRH$_SQLTEXT set sql_text = SUBSTR(sql_text, 1, 12000); 然后再收集。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值