技术开发 频道

数据库性能诊断工具——DM7 AWR

  【IT168厂商动态】DM7提供了许多动态视图供DBA分析数据库性能问题,例如:V$BUFFER 缓冲池动态性能表,用来记录除循环使用缓冲池外的缓冲池控制页结构的信息;V$BUFFER_RECYCLE冲池动态性能表,用来记录循环使用缓冲池控制页结构的信息;V$LATCHES显示正在等待的线程信息。通过分析这些动态视图,DBA可以解决一些性能问题,但动态视图的数据时存在内存中,想要通过这样的方式长期监控数据库的性能是不可行的。基于此,DM7提供了一种长期监控数据库性能的方法,AWR(Automatic Workload Repository )。

  AWR(Automatic Workload Repository)是DM7的一个内置工具,它采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题。它能提供一个时间段内数据库资源使用情况的报告,通过这个报告,我们就可以了解一个系统的整个运行情况,分析性能瓶颈。

  数据库快照是一个只读的静态的数据库。DM7快照功能基于数据库实现,每个快照是基于数据库的只读镜像。通过检索快照,可以获取源数据库在快照创建时间点的相关数据信息。系统为其所有重要统计信息和负载信息执行一次快照,并将这些快照存储在AWR中。用户可以根据需求灵活指定数据库快照生成的频率和保存时间,然后将时间节点内的数据库快照信息生成AWR报告。

  一、生成AWR报告

  用户需要提前调用系统过程SP_CREATE_SYSTEM_PACKAGES,创建管理快照需要的系统包DBMS_WORKLOAD_REPOSITORY。

  SP_CREATE_SYSTEM_PACKAGES(1);

  设置快照自动创建的间隔时间,10分钟

  CALL DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL(10);

  然后可以等待系统自动创建数据库快照,或者用户在需要分析的时间段前后手动创建数据库快照。快照ID从1开始,依次累加。

  手动创建快照:

  DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();

  查看已创建的所有快照信息,包括快照 id:

  SELECT * FROM SYS.WRM$_SNAPSHOT;

  在快照生成成功后,用户可以使用以下语句指定数据库快照的范围ID,生成AWR报告保存为html格式,以便分析。

  把snapshot 的id 在1~2 范围内的AWR分析报告生成到c盘awr1.html文件。

  SYS.AWR_REPORT_HTML(1,2,'C:\','AWR1.HTML');

  修改snapshot 的间隔时间为30分钟、保留时间为 1 天。

  CALL DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(1440,30);

  还可以删除指定ID的数据库快照,节省磁盘空间。

  删除id 在22~32 之间的snapshot。

  CALL DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(22,32);

  查询设置后快照参数。

  SELECT * FROM SYS.WRM$_WR_CONTROL;

  清理全部 snapshot 。

  CALL DBMS_WORKLOAD_REPOSITORY.AWR_CLEAR_HISTORY();

  二、解读AWR报告

数据库性能诊断工具——DM7 AWR

  DB Name: 数据库名

  Elapsed: 采样时间段

  DB Time: 用户操作花费的时间,DB Time和Elapsed Time接近说明数据库基本没有空闲,此时需要配合报告中的其他数据确定数据库繁忙的原因。

数据库性能诊断工具——DM7 AWR

  Memory Pool Size: 数据库共享内存池大小,对应dm.ini中的MEMORY_POOL参数。

  Bytes Allocated From OS: 数据库从操作系统中申请的总内存数,一般这个值在服务器总内存的80%~90%较为理想,这样可以把尽可能多的内存分配给数据库服务,让更多的数据库操作在内存中完成,以提供数据库性能。

  Memory Usage %:共享池内存使用率,如果这个值较高,说明共享池中可能存在争用,可以适当调大MEMORY_POOL值。

  Memory for SQL w/exec>1:执行次数大于1的SQL消耗内存的占比。如果此值过高,说明重复执行的SQL语句较多,可以尝试修改dm.ini参数的的执行计划重用和结果集重用参数。如果此值很低,说明完全相同的SQL语句很少,可以根据报告中提供的SQL,分析是否有类似SQL能改成绑定参数的方式执行,已减少SQL解析的时间。

数据库性能诊断工具——DM7 AWR

  DM Server中有四种类型的数据缓冲区,分别是NORMAL、KEEP、FAST 和RECYCLE。其中,用户可以在创建表空间或修改表空间时,指定表空间属于NORMAL或KEEP 缓冲区。RECYCLE 缓冲区供临时表空间使用,FAST 缓冲区根据用户指定的FAST_POOL_PAGES 和FAST_ROLL_PAGES 大小由系统自动进行管理,用户不能指定使用RECYCLE 和FAST 缓冲区的表或表空间。 NORMAL缓冲区主要是提供给系统处理的一些数据页,没有特定指定缓冲区的情况下,默认缓冲区为 NORMAL;KEEP的特性是对缓冲区中的数据页很少或几乎不怎么淘汰出去,主要针对用户的应用是否需要经常处在内存当中,如果是这种情况,可以指定缓冲区为KEEP。

数据库性能诊断工具——DM7 AWR

  parse time: 整个SQL执行过程中的解析时间,如果这个值较大,证明执行的SQL很复杂,数据库服务在解析SQL的过程中耗时较多,可以考虑修改SQL语句,化繁为简。

  hard parse time: 硬解析时间,如果硬解析时间占整个解析时间的比例很高说明执行计划的重用率很低。

数据库性能诊断工具——DM7 AWR

  TOTAL_PHY_SIZE: 总物理内存大小

  TOTAL_VIR_SIZE: 总虚拟内存大小

  在条件允许的情况下,物理内存不够时,加大物理内存是提高数据库性能的有效办法。

数据库性能诊断工具——DM7 AWR

  SQL ordered by Elapsed Time:记录了执行总和时间的TOP SQL。

  SQL ordered by CPU Time: 记录了执行占CPU时间总和时间最长的TOP SQL。

  SQL ordered by Gets: 记录了执行占总buffer gets(逻辑IO)的TOP SQL。

  SQL ordered by Reads: 记录了执行占总磁盘物理读(物理IO)的TOP SQL。

  找出ordered by Elapsed time,ordered by CPU time,ordered by gets,ordered by read这几个表单中排名靠前的SQL进行分析调优能有效提高数据库性能。

   Elapsed Time(S): SQL语句执行用总时长,此排序就是按照这个字段进行的。

  Executions: SQL语句执行的次数。

  Elapsed Time per Exec(s): 每次执行用时。

  % Total DB Time: SQL的Elapsed Time时间占数据库总时间的百分比。

  %CPU: SQL CPU时间占Elapsed Time的百分比,可以看到图中CPU比例达到73.14%,说明在整个SQL执行过程中,性能压力最大的地方在CPU,可以考虑调优SQL,以减少CPU执行时间。

  %IO: SQL IO时间占Elapsed Time的百分比

   SQL Text: 执行的SQL语句。

特别提醒:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
0
相关文章