AWR 实质上是 Oracle 的一个内置工具,它自动采集与性能相关的统计数据,并从那些统计数据中导出性能量度值,以跟踪潜在的问题。与 Statspack 不同,快照由一个称为 MMON 的新的后台进程及其从ht进程自动地每小时采集一次。为了节省空间,采集的数据在 天后自动清除。快照频率和保留时间都可以由用户修改。它产生两种类型的输出:文本格式(即TXT格式,类似于 Statspack 报表的文本格式但来自于 AWR 信息库)和默认的 HTML 格式(拥有到部分和子部分的所有超链接).

        一.AWR的配置与应用

        查询当前的AWR保存策略,默认是每1小时产生一个SNAPSHOT,保留7天,用户要根据自己的需要设定保存策略。
        SYS>select * from dba_hist_wr_control;
DBID        SNAP_INTERVAL          RETENTION             TOPNSYS
860524039     +0001:00:00.000000    +07 00:00:00.000000   DEFAULT

        AWR配置都是通过dbms_workload_repository包进行配置
        1.调整AWR产生snapshot的频率和保留策略.如将收集间隔时间改为30 分钟一次。并且保留5天时间(注:单位都是为分钟):
        SYS>execdbms_workload_repository.modify_snapshot_settings(interval=>30,retention=>5*24*60);
        2.关闭AWR,把interval设为0则关闭自动捕捉快照
        SYS>execdbms_workload_repository.modify_snapshot_settings(interval=>0);
        3.手工创建一个快照
        SYS>exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();
        4. 查看快照
        SYS>select * from sys.wrh$_active_session_history;
        SYS> select min(snap_id),max(snap_id),dbid from sys.wrh$_active_session_history group by dbid;
        5.手工删除指定范围的快照
        SYS>execDBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id => 22, high_snap_id=> 32, dbid => 3110377062);
        6.创建baseline
        SYS>exec dbms_workload_repository.create_baseline (54,58,'apply_interest_1');
       7.删除baseline
        SYS>execDBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => ' apply_interest_1',cascade => FALSE);

       二.AWR数据的导出和迁移
        1.导出AWR数据并迁移到其它数据库

         SYS>exec DBMS_SWRF_INTERNAL.AWR_EXTRACT(dmpfile => 'awr_data.dmp', mpdir =>'DIR_BDUMP', bid => 1003, eid => 1013);
        2.迁移AWR数据到其他数据库
         SYS>exec DBMS_SWRF_INTERNAL.AWR_LOAD(SCHNAME => 'AWR_TEST', dmpfile =>'awr_data.dmp', dmpdir => 'DIR_BDUMP');
         3.把AWR数据转移到SYS模式中:
         SYS>exec DBMS_SWRF_INTERNAL.MOVE_TO_AWR (SCHNAME => 'TEST');
       三.   生成指定报表

         1.生成AWR报告

         SYS>@$ORACLE_HOME/rdbms/admin/awrrpt.sql;

        2.生成指定时间的ASH报表

         SYS>@$ORACLE_HOME/rdbms/admin/ashrpt.sql;

         3.生成指定时间指定实例的ASH报表

         SYS>@$ORACLE_HOME/rdbms/admin/ashrpti.sql;

         脚本中"i"表示实例.