一. Automatic Workload Repository概念
Automatic Workload Repository(AWR)收集、处理和维护用于问题诊断的性能统计信息。该数据既存在于数据块中,也存在于内存中。AWR手机的数据可以通过报告和视图进行查看。
数据库默认情况下已启用AWR收集统计信息,使用STATISTICS初始化参数来控制。此参数必须为typical或all才能启用AWR统计信息收集。默认的设置为typical。
SQL> show parameter statistics
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
optimizer_use_pending_statistics boolean FALSE
statistics_level string TYPICAL
1. snap shot
快照是ADDM用于性能比较的特定日期内的历史数据集合。在11g中,oracle database每小时会自动生成性能数据的快照,并将这些统计信息在工作负载信息库中保留8天。也可以手动创建快照。
2. Baseline
baseline是指一个特定时间段内的性能数据,保留这些数据是为了在性能问题产生时与其他类似的工作负载时间段内进行比较。Baseline中包含的快照将从自动AWR清理进程中排除并无限期的保留。
二. snap shot管理
默认情况下,oracle database每小时产生一次快照,并将统计信息在工作负载库中保留8天。如有必要,可以使用DBMS_WORKLOAD_REPOSITORY包中的一些存储过程手动创建、删除和修改快照。要调用这些存储过程,用户必须授予DBA角色。
1. 查看历史快照
SQL> select snap_id,dbid,BEGIN_INTERVAL_TIME,END_INTERVAL_TIME from dba_hist_snapshot;
Snap Id DB Id BEGIN_INTERVAL_TIME END_INTERVAL_TIME
------- ----------- -------------------- ---------------------------------------------------------------------------
43 347457836 16-FEB-17 11.00.38.0 17-FEB-17 12.00.57.813 AM
06 PM
43 347457836 16-FEB-17 11.00.19.9 17-FEB-17 12.00.41.935 AM
86 PM
44 347457836 17-FEB-17 03.00.27.0 17-FEB-17 03.12.01.152 AM
00 AM
44 347457836 17-FEB-17 02.59.54.0 17-FEB-17 03.11.43.016 AM
00 AM
45 347457836 17-FEB-17 03.12.01.1 17-FEB-17 03.46.46.694 AM
52 AM
45 347457836 17-FEB-17 03.11.43.0 17-FEB-17 03.46.28.986 AM
16 AM
2. 手动创建快照
SQL> exec dbms_workload_repository.create_snapshot
3. 删除快照
SQL> exec dbms_workload_repository.drop_snapshot_range(dbid=>347457836,low_snap_id=>10,high_snap_id => 20);
PL/SQL procedure successfully completed.
在调用DROP_SNAPSHOT_RANGE存储过程时,属于指定快照范围时间段的active session history(ASH)数据也将被清除。
4. 修改快照设置
对于指定的数据库ID,可以调整快照生成的时间间隔、保留期限和捕获的top sql,但这会影响Oracle Database诊断工具的精确性。
SQL> select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- -------------------- -------------------- ----------
347457836 +00000 01:00:00.0 +00008 00:00:00.0 DEFAULT
SNAP_INTERVAL:自动生成快照的频率
RETENTION:设置影响数据库在工作负载信息库中存储快照的时间
TOPNSQL:设置影响针对每个SQL条件捕获的TOP SQL的数量(Elapsed Time、CPU Time、Parse Calls、shared Memory和Version Count)
修改快照的配置:
execdbms_workload_repository.modify_snapshot_settings(interval=>30,retention=>31*24*60);
5. 创建基线
SQL> exec dbms_workload_repository.create_baseline(start_snap_id=>40,end_snap_id=>42,baseline_name=>'peak_baseline_sep');
PL/SQL procedure successfully completed.
三. 生成awr报告的方式
@?/rdbms/admin/awrrpt.sql --最常见的生成awr报告的方式
@?/rdbms/admin/awrsqrpt.sql --生成awr报告中指定sql_id的执行计划
@?/rdbms/admin/awrddrpt.sql –比较两个awr报告
@?/rdbms/admin/awrrpti.sql --适用于rac等环境
@?/rdbms/admin/awrextr.sql --导出awr数据(awr归档)
@?/rdbms/admin/awrload.sql –导入awr数据
1. 最常见生成awr报告
a. Enter value for report_type:HTML # 选择生成报告的类型,默认为HTML
b. Enter value for num_days:3 # 选择快照的天数
c. Enter value for begin_snap: 55 # 选择开始快照ID
d. Enter value for end_snap: 63 # 选择结束快照ID
e. Enter value for report_name: 20170219.html # 选择生成快照的名称
2. 导出awr报告到其他数据库
a. 创建导出目录
SQL> create directory awr_dir as '/home/oracle/awr';
Directory created.
b. 导出快照
SQL>@?/rdbms/admin/awrextr.sql
--
Entervalue for directory_name: AWR_DIR # 指定目录名
c. 导出文件
[oracle@prod1awr]$ ls
20170219.dmp 20170219.log
d. 传输dmp文件到其他数据库
[root@prod1awr]# scp 20170219.dmp 192.168.48.10:/home/oracle/awr
e. 在目标数据库创建目录
SQL>create directory awr_dir as '/home/oracle/awr';
f. 导入快照
SQL>@?/rdbms/admin/awrload.sql
g. 查看导入的报告
SQL>@?/rdbms/admin/awrrpt.sql
Instancesin this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DB Id Inst Num DB Name Instance Host
-------------------- ------------ ------------ ------------
347457836 1 PROD prod1 prod1
*1461328567 1 ORCL orcl centos6
347457836 2 PROD prod2 prod2