AWR说明
AWR(Automatic Workload Repository)是Oracle的一个内置工具,它采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题。
快照由一个称为MMON的后台进程及其从进程自动地每小时采集一次。为了节省空间,采集的数据在7天后自动清除。快照频率和保留时间都可以由用户修改。它产生两种类型的输出:文本格式和默认的HTML格式,HTML格式拥有到部分和子部分的所有超链接,从而提供了非常友好的用户报表。
AWR使用几个表来存储采集的统计数据。所有的表都存储在SYSAUX表空间中的SYS模式下,并且以WRM$_*和WRH$_*的格式命名。WRM$_*类型的表存储元数据信息(如检查的数据库和采集的快照),WRH$_*类型的表保存实际采集的统计数据。M代表metadata,元数据;H代表historaical,历史数据。
在这些表上构建了几种带前缀 DBA_HIST_ 的视图,这些视图可以用来编写您自己的性能诊断工具。视图的名称直接与表相关,如:视图DBA_HIST_SYSMETRIC_SUMMARY是在WRH$SYSMETRIC_SUMMARY表上构建的。
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
---------- -------------------- -------------------- ----
823279453 +00000 01:00:00.0 +00007 00:00:00.0 DEFAULT
以上结果表示,每小时产生一个snapshot,保留7天。
2、调整AWR配置
AWR配置都是通过dbms_workload_repository包进行配置。
(1)、调整AWR产生snapshot的频率和保留策略。
如,将收集间隔时间改为30分钟一次,并且保留5天时间(单位都是分钟):
SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>30,retention=>5*24*60);
PL/SQL procedure successfully completed.
(2)、关闭AWR,把interval设为0则关闭自动捕捉快照
SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>0);
PL/SQL procedure successfully completed.
(3)、手工创建一个快照
SQL> exec dbms_workload_repository.create_snapshot();
PL/SQL procedure successfully completed.
(4)、查看快照
SQL> select * from sys.wrh$_active_session_history;
(5)、手工删除指定范围的快照
SQL> exec dbms_workload_repository.drop_snapshot_range(low_snap_id => 973, high_snap_id => 999,dbid => 1354067853);
(6)、创建baseline,保存这些数据用于将来分析和比较
SQL> exec dbms_workload_repository.create_baseline(start_snap_id => 70, end_snap_id => 80,baseline_name => 'oltp_peakload_b1');
查看baseline:
select * from dba_hist_baseline
(7)、删除baseline
SQL> exec dbms_workload_repository.drop_baseline(baseline_name => 'oltp_peakload_b1',cascade => false);
cascade指定为false,只删除该baseline;
cascade指定为true,删除该baseline的同时,删除和该baseline相关的snapshots。
(8)、将AWR数据导出并迁移到其它数据库以便以后分析
SQL> exec dbms_swrf_internal.awr_extract(dmpfile => 'awr_data.dmp', dmpdir => 'DATA_PUMP_DIR', bid =
> 70, eid => 80);
其中,dmpdir指定的目录为目录对象。
查看目录对象:select * from dba_directories;
创建目录对象:
SYS@ tsid > create directory dump_dir1 as 'E:\oracle\product\10.2.0\db_1\RDBMS\log';
Directory created.
删除目录对象:
SYS@ tsid > drop directory dump_dir1;
Directory dropped.
(9)、迁移AWR数据文件到其它数据库
SQL> exec dbms_swrf_internal.awr_load(schema => ‘AWR_TEST’, dmpfile => ‘awr_data.dmp’, dmpdif => ‘DATA_PUMP_DIR’);
把AWR数据转移到SYS模式中:
SQL> exec dbms_swrf_internal.move_to_awr(schema => ‘TEST’);