ITPub博客

首页 > Linux操作系统 > Linux操作系统 > AWR: Automatic Workload Repository

AWR: Automatic Workload Repository

Linux操作系统 作者:tthero00boo 时间:2013-11-24 16:34:02 0 删除 编辑
from:
http://blog.csdn.net/tianlesoftware/article/details/4682300


 


Oracle 10g之前对数据库做性能检测使用statspack工具。

Oracle Database 10g 提供了一个新的工具:(AWR:Automatic Workload Repository)。

AWR简称Automatic Workload Repository,它作为SYSAUX表空间中的一组表和其他对象而存在。

统计信息在内存中(也就是在SGA内的数据结构中)累积。因为统计信息只反映实例所做的操作,所以并不影响实例的性能.

将计信息定期的(默认是60分钟)写入磁盘,也就是写入AWR。这称为一次AWR快照。
将统计信息写入磁盘的操作由后台进程MMON(可管理性监视器)完成。默认情况下,在重写前,快照会保留8天。

与 Statspack 不同,快照由一个称为 MMON 的新的后台进程及其从进程自动地每小时采集一次。
只要生成快照,MMON进程就会自动运行ADDM(Automatic Database Diagnostic)。

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)

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

/* 查看当前的AWR保存策略 */
SQL> col SNAP_INTERVAL format a20
SQL> col RETENTION format a20
SQL> select * from dba_hist_wr_control;

      DBID SNAP_INTERVAL        RETENTION            TOPNSQL
---------- -------------------- -------------------- ----------
2432893466 +00000 01:00:00.0    +00008 00:00:00.0    DEFAULT

/* 调整AWR配置 */
AWR配置都是通过dbms_workload_repository包进行配置。

/* 调整AWR产生snapshot的频率和保留策略 ,
如将收集间隔时间改为30 分钟一次。并且保留5天时间(单位都是分钟):*/

SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60);

SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60);
BEGIN dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60); END;

*
ERROR at line 1:
ORA-13541: system moving window baseline size (691200) greater than retention
(432000)
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 174
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 222
ORA-06512: at line 1


SQL> select 5*24*60*60 as sec from dual;

       sec
----------
    432000

/* 检查当前的移动窗口基线大小 */
col BASELINE_NAME for a30
SELECT dbid, baseline_name, baseline_type, moving_window_size from dba_hist_baseline;

   DBID BASELINE_NAME                  BASELINE_TYPE MOVING_WINDOW_SIZE
---------- ------------------------------ ------------- ------------------
2432893466 SYSTEM_MOVING_WINDOW           MOVING_WINDOW                  8


SQL> exec dbms_workload_repository.modify_baseline_window_size(5);

PL/SQL procedure successfully completed.

SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60);

PL/SQL procedure successfully completed.

SQL> select * from dba_hist_wr_control;

      DBID SNAP_INTERVAL        RETENTION            TOPNSQL
---------- -------------------- -------------------- ----------
2432893466 +00000 00:30:00.0    +00005 00:00:00.0    DEFAULT


/* 关闭AWR,把interval设为0则关闭自动捕捉快照 */
SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>0);

/* 手工创建一个快照 */
SQL> exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();

PL/SQL procedure successfully completed.

/* 查看快照 */

SQL> select count(*) from sys.wrh$_active_session_history;

  COUNT(*)
----------
       599

/* 查看 10天以前的快照snap_id */

select distinct snap_id,sample_time from sys.wrh$_active_session_history where sample_time < sysdate - 10;

/* 手工删除指定范围的快照 */
SQL> exec DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id => 339, high_snap_id => 353, dbid => 2432893466);

/* 创建baseline,保存这些数据用于将来分析和比较 */
SQL> exec dbms_workload_repository.create_baseline(start_snap_id => 373,end_snap_id => 376,baseline_name => 'bl_test');

PL/SQL procedure successfully completed.

/* 查看基线*/
SQL> col BASELINE_NAME for a10
SQL> select baseline_id,baseline_name,baseline_type,start_snap_id,end_snap_id,creation_time
from dba_hist_baseline;

BASELINE_ID BASELINE_N BASELINE_TYPE START_SNAP_ID END_SNAP_ID CREATION_TIME
----------- ---------- ------------- ------------- ----------- ------------------
          2 bl_test    STATIC                  373         376 24-NOV-13
          0 SYSTEM_MOV MOVING_WINDOW           359         389 15-MAY-13
            ING_WINDOW

/* 删除baseline , cascade参数选择是否将其关联的Snapshots级别进行删除*/

SQL> exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => 'bl_test',cascade => false);

PL/SQL procedure successfully completed.

 

4.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。

4.2 SQL ordered by CPU Time:

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

4.3 SQL ordered by Gets:

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


4.4 SQL ordered by Reads:

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

 
4.5 SQL ordered by Executions:

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


4.6 SQL ordered by Parse Calls:

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

4.7 SQL ordered by Sharable Memory:

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


4.8 SQL ordered by Version Count:

            记录了SQL的打开子游标的TOP SQL。


4.9 SQL ordered by Cluster Wait Time:

            记录了集群的等待时间的TOP SQL

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28859270/viewspace-777442/,如需转载,请注明出处,否则将追究法律责任。

上一篇: Flashback
请登录后发表评论 登录
全部评论

注册时间:2013-06-30

  • 博文量
    31
  • 访问量
    142198