AWR 实质上是 Oracle 的一个内置工具,它自动采集与性能相关的统计数据,并从那些统计数据中导出性能量度值,以跟踪潜在的问题。与 Statspack 不同,快照由一个称为 MMON 的新的后台进程及其从ht进程自动地每小时采集一次。为了节省空间,采集的数据在 7 天后自动清除。快照频率和保留时间都可以由用户修改。它产生两种类型的输出:文本格式(即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"表示实例.