当前位置: 首页 > news >正文

DM8故障分析工具-AWR报告

     在数据库运维过程中,大家都会利用数据库提供的各种工具来找到数据库存在的问题,以便对症实施配置优化,我是因工作需要,最近开始了解达梦数据库DM8的故障分析工具,这里发现AWR报告是一款不错的自带工具,故而把相关内容梳理出来,便于日后查阅回忆查阅。

一、配置AWR报告生成的步骤。

       AWR报告并不是默认开启的,因其对数据库服务器的性能是有较大影响的,所以只有在你需要的时候才开启,平时一般是没有开启的。同时为了帮助准确分析问题,建议选择性能影响最大的两个时间点间生成AWR报告,避免关键指标被平均 影响你对故障的分析,故而首先就是需要掌握如何生成报告,下面是报告的生成具体步骤。

1、初始化AWR快照包 。通过调用sp_init_awr_sys(1);  该存储过程完成初始化操作,其中参数值为1表示初始化 ,为0表示去掉初始化,即停止AWR报告生成。 初始化之后,可通过SELECT SF_CHECK_AWR_SYS; 快速查看状态,以验证初始化是否正常,1为正常(如下图)。

2、设置时间间隔。 AWR报告是需要通过不同时间节点进行对比分析来查找故障原因的,所以接下来设置时间间隔的方法是调用 dbms_workload_repository.awr_set_interval(10);这样的系统过程,其中10表示的是10分钟,系统默认是60分钟,你可以根据需要设置。

3、手动生成快照。可通过调用系统存储过程 dbms_workload_repository.create_snapshot();快照,若参数为空或设置为'TYPICAL' 表示仅刷新部分数据,若参数为'ALL'表示将全部历史数据保存下来,该值会影响快照生成数据的大小,一般参数为空就可以。

4、查看快照。 通过下面SQL语句可以查看系统生成快照情况,如下图所示 SELECT * from sys.WRM$_SNAPSHOT;

5、生成AWR报告。当快照有两份或多份的时候,就可以通过调下这个系统包生成awr报告。sys.awr_report_html(1,2,'/dmdbms','1.html');其中前两个参数表示开始和结束的快照ID号,即第4步查询到snap_id,第三个参数表示awr报告输出目录,第四参数是AWR报告文件名。同时该过程生成是HTML格式的报告,还可调用AWR_REPORT_TEXT生成TEXT格式的报告等,参数类似。 也可以用如下的函数直接在SQL中查看报告,但我比较喜欢第一种HTML格式, SELECT * FROM TABLE (DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(1,2))。

至此报告生成完成了,就可以调用call sp_init_awr_sys(0);过程,关闭快照生成,至此系统中的快照就会删除,第4步的查询快照就会报错了,但系统的性能会恢复正常,你就可以开始分析报告了。

二、对AWR报告进行分析

        AWR报告分析,涉及内容很多,是一个不断实践不断总结提升的过程,在此把一些常见的分析内容放在这里,随着工作经验的增加,可能这里的内容会越来越多,希望与有兴趣的同事交流提升。

1、数据库负载分析。在下图的指标项中,可分析数据库负载分析,即DB TIME/(Elapsed*CPUS)可了解数据库负责情况,一般认为大于80%时,表明数据库存在性能问题,此时需要分析TOP的等待事件,或SQL ORDER By Elapsed Time大量数据排序消耗时间。

2、硬解析分析。通过下图可查看到硬解析占比,正常业务系统中硬解析的数量一般应在10%以下,而且占比越少越好,否则就要分析SQL语句是否应该优化了。查看commit提交情况,若非常多可调整buffer区,工作线程量等,因commit提交太多,就是IO写太高,影响性能。

在下图中,可重点关注Non-Parse CPU和Execute to Parse两个指标,查看系统中SQL是否有优化空间,是否是硬解析太多,以便考虑优化SQL写法,具体如下:

  • Non-Parse CPU是表示 SQL实际运行时间/(SQL实际运行时间+SQL解析时间),若该值太低表示解析消耗时间过多,就需要对SQL进行优化,比如注意SQL使用参数化、变量绑定等,还有SQL写法是否可优化以提升SQL执行计划命中缓存等,否则太多时间在解析SQL是不利于系统性能的。
  • Execute to Parse是指SQL语句执行与分析比例,若SQL重用率高,则这个比例就高,该值越高表示解析后被重复执行的次数越多,这样就是我们所期望的,因执行是业务有效的使用,而不是在解析SQL。

3、其他相关内容分析

        正如前面看到的,还有一些内置的视图帮助我们查找问题,因实践经验不多,在此就只是列出来了,以后有具体应用在补充,同时也方便有需要时查找方便。

A、等待事件。通过可通过下面几个视图查看到系统当前状态下的等待事件情况,V$system_event,V$session_event,V$event_name,v$sessions。

B、内存。通过以下几个视图查看当前系统中内存使用情况: v$buffer,v$bufferpool,v$vpool,v$mem_pool 。

C、锁。通过v$lock系统视图查看当前系统中锁的情况。

相关文章:

  • mysql导入大sql(比如10GB的sql文件)
  • Kubernetes核心技术原理详解
  • Linux文件元信息完全指南:权限、链接与时间属性
  • 文本分类与聚类:让信息“各归其位”的实用方法
  • 用Python实现安全封装EXE文件加密保护工具
  • Windows IOCP(I/O Completion Port)模型详解
  • TCP 三次握手与四次挥手全流程详解
  • Android Studio 打 APK 包报错 Invalid keystore format 的解决方法
  • Linux运维新人自用笔记(Ubuntu磁盘命名规则、新磁盘分区、主流文件系统类型、mkfs命令格式化文件系统、临时和永久挂载、挂载报错、dd指令)
  • C++11 std::thread 多线程编程详解
  • 18年磨一剑!开利科技启动数字化增量投资新时代
  • 常见应用层协议介绍
  • MCP入门实战(Python版)
  • [C++] traits机制
  • 领域驱动设计(DDD)【2】之项目启动与DDD基本开发流程
  • AtCoder AT_abc411_c [ABC411C] Black Intervals
  • 多头注意力机制中全连接函数
  • 阿里云ACP认证-数据仓库
  • 如何优化HarmonyOS 5的分布式通信性能?
  • day44-硬件学习之arm启动代码
  • 网站网络推广能优化/官网建设
  • 衡水网站建设推广/免费做网页的网站
  • 南溪区网站建设/谷歌广告怎么投放
  • 信用网站建设情况/市场营销主要学什么
  • 有专业制作网站的公司吗/怎样宣传网站
  • 微信小程序开发全套教程/长沙seo优化公司