Oracle AWR 介绍

Oracle Database 10g 提供了一个显著改进的工具:自动工作负载信息库 (AWR:Automatic Workload Repository)。Oracle 建议用户用这个取代 Statspack。AWR 实质上是一个 Oracle 的内置工具,它采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题。与 Statspack 不同,快照由一个称为 MMON(memory monitor ) 和MMNL(Manageability Monitor Light)的新的后台进程及其从进程自动地每小时采集一次。为了节省空间,采集的数据在 7 天后自动清除。快照频率和保留时间都可以由用户修改。它产生两种类型的输出:文本格式(类似于 Statspack 报表的文本格式但来自于 AWR 信息库)和默认的 HTML 格式(拥有到部分和子部分的所有超链接),从而提供了非常用户友好的报表。
AWR 使用几个表来存储采集的统计数据,所有的表都存储在新的名称为 SYSAUX 的特定表空间中的 SYS 模式下,并且以 WRM$_* 和 WRH$_* 的格式命名。前一种类型存储元数据信息(如检查的数据库和采集的快照),后一种类型保存实际采集的统计数据。H 代表“历史数据 (historical)”而 M 代表“元数据 (metadata)”。在这些表上构建了几种带前缀 DBA_HIST_ 的视图,这些视图可以用来编写您自己的性能诊断工具。视图的名称直接与表相关;例如,视图 DBA_HIST_SYSMETRIC_SUMMARY 是在WRH$_SYSMETRIC_SUMMARY 表上构建的。

注意:

statistics_level 默认是typical,在10g中表监控是激活的,强烈建议在10g中此参数的值是typical。如果STATISTICS_LEVEL设置为basic,不仅不能监控表,而且将禁掉如下一些10g的新功能:
ASH(Active Session History)
ASSM(Automatic Shared Memory Management)
AWR(Automatic Workload Repository)
ADDM(Automatic Database Diagnostic Monitor)

 

 

  1. SELECT STATISTICS_NAME,   
  2.        SESSION_STATUS,   
  3.        SYSTEM_STATUS,   
  4.        ACTIVATION_LEVEL,   
  5.        SESSION_SETTABLE   
  6.   FROM v$statistics_level   
  7.  ORDER BY 1   
  8. /   
  9.   
  10.   
  11.   
  12.                                Session    System     Activation Session   
  13. Statistics Name                Status     Status     Level      Settable   
  14. ------------------------------ ---------- ---------- ---------- ----------   
  15. Active Session History         ENABLED    ENABLED    TYPICAL    NO  
  16. Bind Data Capture              ENABLED    ENABLED    TYPICAL    NO  
  17. Buffer Cache Advice            ENABLED    ENABLED    TYPICAL    NO  
  18. Global Cache Statistics        ENABLED    ENABLED    TYPICAL    NO  
  19. Longops Statistics             ENABLED    ENABLED    TYPICAL    NO  
  20. MTTR Advice                    ENABLED    ENABLED    TYPICAL    NO  
  21. Modification Monitoring        ENABLED    ENABLED    TYPICAL    NO  
  22. PGA Advice                     ENABLED    ENABLED    TYPICAL    NO  
  23. Plan Execution Statistics      DISABLED   DISABLED   ALL        YES   
  24. Segment Level Statistics       ENABLED    ENABLED    TYPICAL    NO  
  25. Shared Pool Advice             ENABLED    ENABLED    TYPICAL    NO  
  26. Threshold-based Alerts         ENABLED    ENABLED    TYPICAL    NO  
  27. Timed OS Statistics            DISABLED   DISABLED   ALL        YES   
  28. Timed Statistics               ENABLED    ENABLED    TYPICAL    YES   
  29. Ultrafast Latch Statistics     ENABLED    ENABLED    TYPICAL    NO  
  30. Undo Advisor, Alerts and Fast  ENABLED    ENABLED    TYPICAL    NO  
  31. Ramp up   
  32.   
  33.   
  34. 16 rows selected.  

=================================================================================================


一. AWR使用
SQL>@?/rdbms/admin/awrrpt.sql

Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
Would you like an HTML report, or a plain text report?
Enter 'html' for an HTML report, or 'text' for plain text
Defaults to 'html'
输入 report_type 的值:  
Type Specified:  html
Specify the number of days of snapshots to choose from
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Entering the number of days (n) will result in the most recent
(n) days of snapshots being listed.  Pressing  without
specifying a number lists all completed snapshots.
输入 num_days 的值:  1
Listing the last day's Completed Snapshots
                                                        Snap
Instance     DB Name        Snap Id    Snap Started    Level
------------ ------------ --------- ------------------ -----
orcl10g      ORCL10G            142 03 7月  2009 08:11     1
                                143 03 7月  2009 09:00     1
                                144 03 7月  2009 10:00     1
                                145 03 7月  2009 11:00     1
                                146 03 7月  2009 12:01     1
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
输入 begin_snap 的值:  142
Begin Snapshot Id specified: 142
输入 end_snap 的值:  146
End   Snapshot Id specified: 146
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is awrrpt_1_142_146.html.  To use this name,
press  to continue, otherwise enter an alternative.
输入 report_name 的值:  D:\awrrpt_1_142_146.html
Report written to D:\awrrpt_1_142_146.html

二 AWR 操作
1.查看当前的AWR保存策略
SQL> col SNAP_INTERVAL format a20
SQL> col RETENTION format a20
SQL> select * from dba_hist_wr_control;
      DBID SNAP_INTERVAL        RETENTION            TOPNSQL
---------- -------------------- -------------------- ----------
262089084 +00000 01:00:00.0    +00007 00:00:00.0    DEFAULT
以上结果表示,每小时产生一个SNAPSHOT,保留7天。
2.调整AWR配置
AWR配置都是通过dbms_workload_repository包进行配置。
2.1 调整AWR产生snapshot的频率和保留策略,如将收集间隔时间改为30 分钟一次。并且保留5天时间(单位都是分钟):
SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60);
2.2 关闭AWR,把interval设为0则关闭自动捕捉快照
SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>0);
2.3 手工创建一个快照
SQL> exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
2.4 查看快照
SQL> select * from sys.wrh$_active_session_history
2.5 手工删除指定范围的快照
SQL> exec DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id => 973, high_snap_id => 999, dbid => 262089084);
2.6 创建baseline,保存这些数据用于将来分析和比较
SQL> exec dbms_workload_repository.create_baseline(start_snap_id => 1003, end_snap_id => 1013, 'apply_interest_1');
2.7 删除baseline
SQL> exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => 'apply_interest_1', cascade => FALSE);
2.8 将AWR数据导出并迁移到其它数据库以便于以后分析
SQL> exec DBMS_SWRF_INTERNAL.AWR_EXTRACT(dmpfile => 'awr_data.dmp', mpdir => 'DIR_BDUMP', bid => 1003, eid => 1013);
2.9 迁移AWR数据文件到其他数据库
SQL> exec DBMS_SWRF_INTERNAL.AWR_LOAD(SCHNAME => 'AWR_TEST', dmpfile => 'awr_data.dmp', dmpdir => 'DIR_BDUMP');
把AWR数据转移到SYS模式中:
SQL> exec DBMS_SWRF_INTERNAL.MOVE_TO_AWR (SCHNAME => 'TEST');


三. AWR 报告分析
3.1 SQL ordered by Elapsed Time
记录了执行总和时间的TOP SQL(请注意是监控范围内该SQL的执行时间总和,而不是单次SQL执行时间 Elapsed Time = CPU Time + Wait Time)。
Elapsed Time(S): SQL语句执行用总时长,此排序就是按照这个字段进行的。注意该时间不是单个SQL跑的时间,而是监控范围内SQL执行次数的总和时间。单位时间为秒。Elapsed Time = CPU Time + Wait Time
CPU Time(s): 为SQL语句执行时CPU占用时间总时长,此时间会小于等于Elapsed Time时间。单位时间为秒。
Executions: SQL语句在监控范围内的执行次数总计。
Elap per Exec(s): 执行一次SQL的平均时间。单位时间为秒。
% Total DB Time: 为SQL的Elapsed Time时间占数据库总时间的百分比。
SQL ID: SQL语句的ID编号,点击之后就能导航到下边的SQL详细列表中,点击IE的返回可以回到当前SQL ID的地方。
SQL Module: 显示该SQL是用什么方式连接到数据库执行的,如果是用SQL*Plus或者PL/SQL链接上来的那基本上都是有人在调试程序。一般用前台应用链接过来执行的sql该位置为空。
SQL Text: 简单的sql提示,详细的需要点击SQL ID。

3.2 SQL ordered by CPU Time:
记录了执行占CPU时间总和时间最长的TOP SQL(请注意是监控范围内该SQL的执行占CPU时间总和,而不是单次SQL执行时间)。

3.3 SQL ordered by Gets:
记录了执行占总buffer gets(逻辑IO)的TOP SQL(请注意是监控范围内该SQL的执行占Gets总和,而不是单次SQL执行所占的Gets)。

3.4 SQL ordered by Reads:
记录了执行占总磁盘物理读(物理IO)的TOP SQL(请注意是监控范围内该SQL的执行占磁盘物理读总和,而不是单次SQL执行所占的磁盘物理读)。

3.5 SQL ordered by Executions:
记录了按照SQL的执行次数排序的TOP SQL。该排序可以看出监控范围内的SQL执行次数。

3.6 SQL ordered by Parse Calls:
记录了SQL的软解析次数的TOP SQL。说到软解析(soft prase)和硬解析(hard prase),就不能不说一下Oracle对sql的处理过程。

3.7 SQL ordered by Sharable Memory:
记录了SQL占用library cache的大小的TOP SQL。Sharable Mem (b):占用library cache的大小,单位是byte。

3.8 SQL ordered by Version Count:
记录了SQL的打开子游标的TOP SQL。

3.9 SQL ordered by Cluster Wait Time:
记录了集群的等待时间的TOP SQL



============================================================================================ =====

4、可以根据上面的awr报告中,找出花费时间比较长的单条sql语句的执行计划

  如:sql id为c0yffdyps8uk9 花费了26秒时间




  SQL> @?/rdbms/admin/awrsqrpt.sql
  Specify the Begin and End Snapshot Ids
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Enter value for begin_snap: 1679
  Begin Snapshot Id specified: 1679
  Enter value for end_snap: 1680
  End Snapshot Id specified: 1680
  Specify the SQL Id
  ~~~~~~~~~~~~~~~~~~
  Enter value for sql_id: (输入c0yffdyps8uk9)



这样生产的sql可以很容易的看出该sql的执行计划


=================================================================================================


AWR report 各个域分析:

http://hi.baidu.com/liujingguo2008/blog/item/aeb29ad090829a81a1ec9c42.html


如何分析AWR (5) :
http://www.os2ora.com/how-to-analyze-awr-report-5/

 

你可能感兴趣的:(html,oracle,sql,cache,IE)