美文网首页ORACLE优化
Oracle AWR报告的生成和分析

Oracle AWR报告的生成和分析

作者: air_b10f | 来源:发表于2019-03-30 09:33 被阅读0次

一、是什么:AWR (Automatic Workload Repository) 是自动负载信息库的英文缩写,AWR报告是Oracle 10g以后版本提供的一种性能收集和分析工具,能提供一个时间段内整个系统资源使用情况的报告,通过报告可以了解一个系统的整个运行情况,生成的报告包括多个部分。

AWR每小时对v$active_session_history视图(内存中的ASH采集信息,理论为1小时)进行采样一次,并将信息保存到磁盘中,并且保留7天,7天后旧的记录才会被覆盖。这些采样信息被保存在wrh$_active_session_history视图(写入AWR库中的ASH信息,理论为1小时以上)中。而这个采样频率(1小时)和保留时间(7天)是可以根据实际情况进行调整的,这就给DBA们提供了更加有效的系统监测工具。

二、什么情况下用

DBA对数据库运行状态及状况的监控了解、测试过程中发现数据库出现瓶颈但无法定位到具体原因时,可以借用AWR报告进行分析定位。

数据库出现性能问题,一般都在三个地方:IO、内存、CPU,这三个地方又是息息相关的。假设这个三个地方都没有物理上的故障,当IO负载增大时,肯定需要更多的内存来存放,同时也需要CPU花费更多的时间来过滤这些数据。相反,CPU时间花费多的话,有可能是解析SQL语句,也可能是过滤太多的数据,倒不一定是和IO或内存有关系。

CPU:解析SQL语句,尝试多个执行计划,最后生成一个数据库认为是比较好的执行计划,但不一定是最优的。因为关联表太多的时候,数据库并不会穷举所有的执行计划,这会消耗太多的时间,oracle怎么知道这条数据是你要的,另一个就不是你要的呢,这是需要cpu来过滤的。

内存:SQL语句和执行计划都需要在内存保留一段时间,还有取到的数据,根据LRU算法也会尽量在内存中保留,在执行SQL语句过程中,各种表之间的连接,排序等操作也要占用内存。

IO:如果需要的数据不在内存中,则需要到磁盘中去取,就会涉及到物理IO了,还有表之间的连接数据太多,以及排序等操作内存放不下的时候,需要用到临时表空间,也会消耗物理io了。

这里说明下,ORACLE分配的内存中PGA一般只占20%,对于专用服务器模式,每次执行SQL语句、表数据的运算等操作,都在PGA中进行的,也就是说只能用ORACL分配内存的20%左右,如果多个用户都执行多表关联,而且表数据又多,再加上关联不当的话,内存就成为瓶颈了,所以优化SQL很重要的一点就是,减少逻辑读和物理读。

三、如何生成awr报告

1、登录ORACLE数据库服务器,记住当前目录或者切换至AWR想要保存的目录;

cd 到要生成的目录

2、SQLplus 用户名/密码@服务连接名,连接oracle数据库实例

sqlplus / as sysdba

3、执行@?/rdbms/admin/awrrpt; 会出现提示,

可以生成以下几种类型AWR报告,大部分情况下都是生成本实例的AWR报告

@?/rdbms/admin/awrrpt;  本实例AWR包括

@?/rdbms/admin/awrrpti; RAC中选择实例号

@?/rdbms/admin/awrddrpt; AWR 比对报告

@?/RDBMS/admin/awrgrpt; RAC全局AWR报告

执行命令之后,会提示你输入一些参数

(1) Enter value  of report_type

意思是生成报告的格式有两种,html和txt,不选直接回车默认是html

(2) Enter value of num_days

收集几天的报告信息,数字,可以输入1

(3) Enter value of begin_snap

输入开始快照id,要根据日志打印的快照id范围来填

注:创建快照exec dbms_workload_repository.create_snapshot(); 或

select dbms_workload_repository.create_snapshot() from dual;

补充:用数据库脚本生成报告

1、准备

查询dbid

select dbid from v$database;

查询instance_number

select instance_number from v$instance;

查询历史快照

select SNAP_ID,dbid,SNAP_LEVEL,BEGIN_INTERVAL_TIME from dba_hist_snapshot order by SNAP_ID desc;

2、生成报告

1)AWR关注数据库的整体性能报告

select output from table(dbms_workload_repository.awr_report_html

(v_dbid, v_instance_number,v_min_snap_id,v_max_snap_id

));

2)ASH是针对数据库中的等待事件与那些Sql具体对应

select output from table(dbms_workload_repository.ash_report_html(dbid,inst_num,l_btime,l_etime));

3)ADDMOracle给出的一些建议

SELECT dbms_advisor.get_task_report('ADDM_02', 'TEXT', 'ALL') FROM DUAL;

4)AWRSQ具体某个Sql的执行计划,可以保存多个执行。

SELECT output FROM TABLE(dbms_workload_repository.awr_sql_report_html(l_dbid    => 933701465,  l_inst_num => 1,   l_bid      => 9481,  l_eid      => 9482,  l_sqlid    => 'cjw3p3c3un5k5'));

5)查看SQLMonitor

  SELECT dbms_sqltune.report_sql_monitor(sql_id => '5mkzc5m91878c',session_id =>2417, report_level => 'ALL', type => 'ACTIVE') FROM dual;

  SELECT dbms_sqltune.report_sql_monitor(sql_id      =>  '5mkzc5m91878c',  TYPE => 'HTML', report_level => 'ALL')  FROM dual;

四、分析AWR报告

参考:

https://cnodejs.org/topic/57f8a9a48489e7ca69f4e8a1

https://blog.csdn.net/defonds/article/details/52958303

相关文章

  • 如何生成 AWR 报告?

    如何生成 AWR 报告? . 1.生成单实例 AWR 报告: @$ORACLE_HOME/rdbms/admin/...

  • Oracle-AWR报告生成

    前言本文为前一篇 Oracle-AWR的使用的细节补充,重在讲解awr报告生成、基线报告生成、命令行操作。 awr...

  • Oracle AWR报告的生成和分析

    一、是什么:AWR (Automatic Workload Repository) 是自动负载信息库的英文缩写,A...

  • Oracle AWR报告生成和性能分析

    [TOC] 一、AWE报告生成步骤 对于SQL调优,局部SQL,我们可以直接使用执行计划等直接调优,而对于整个系统...

  • Oracle手动生成awr报告

    Oracle手动生成awr报告 awr报告:帮助进行日常数据库性能评定,问题sql发现的重要手段 1.调用脚本,生...

  • Oracle-AWR的使用

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

  • oracle AWR报告

    步骤一:查询出sql的记录 注:时间为输入值,看需要输入 步骤二: 方法一sql: 方法二sql: 例子:

  • AWR和ASH报告8

    AWR报告: 1、AWR基线: 2、AWR报告生成: DB-Time:所有用户使用数据库的时间,比如一个用户的DB...

  • 《收获,不止SQL优化》读书笔记

    整体性能分析 AWR、ASH、ADDM、AWRDD 整体分析调优工具 AWR:关注数据库的整体性能的报告; ASH...

  • 手动生成AWR报告

    登录SQLPLUS,直接执行 生成快照文件 快照生成完成后,再进行输出报告awr文件 如图所示,会提示让你选择生成...

网友评论

    本文标题:Oracle AWR报告的生成和分析

    本文链接:https://www.haomeiwen.com/subject/mibkbqtx.html