1. AWR是什么?
AWR(Automatic Workload Repository)是存放oracle数据库历史性能数据的信息库,包含系统、session、sql等大量的统计数据,存放在SYSAUX表空间里,信息库包含很多表,都是以“WR”开头:WR元数据(WRM$),历史、可变数据(WRH$、WRR$和WRI$),顾问(advisor)功能相关的AWR表(WRI$)。另外,还可以通过DBA_HIST开头的视图访问AWR数据。最新的AWR信息存放在SGA中,默认MMON进程每隔一小时启动slave进程m00x创建AWR snapshot,将数据保存在SYSAUX表空间。
2. 如何管理AWR?
2.1 启用AWR
设置STATISTICS_LEVEL为TYPICAL或者ALL。如果STATISTICS_LEVEL为BASIC,AWR功能不会启用,但是可以通过使用DBMS_WORKLOAD_REPOSITORY包手工抓取AWR统计数据。
2.2 管理snapshot
2.2.1 关于snapshot
AWR的数据是通过snapshot获取的。快照就是某一时刻系统的状态。默认情况,数据库1小时收集一次snapshot,并在WR(Workload Repository)中保留8天(11g之后)。当然也可以手动创建和删除snapshot,主要使用DBMS_WORKLOAD_REPOSITORY包实现。
2.2.2 创建snapshot
执行DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT()生成新的snapshot,通过DBA_HIST_SNAPSHOT视图可以查看已经存在的snapshot。- BEGIN
- DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
- END;
- /
2.2.3 删除snapshot
默认情况,AWR中的snapshot超过8天后会自动删除,但也可以手动删除,如下:
- BEGIN
- DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(
- low_snap_id => 22,
- high_snap_id => 32,
- dbid => 3310949047);
- END;
- /
2.2.4 修改snapshot设置
可以修改产生快照的时间间隔、保留期限、Top sql的数量(interval、retention、topnsql),同时注意,修改后会影响oracle诊断工具的精度。如果要设置保留30天(43200分钟)、间隔30分钟、topsql取前100,如下所示:
- BEGIN
- DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
- retention => 43200,
- interval => 30,
- topnsql => 100,
- dbid => 3310949047);
- END;
- /
通过DBA_HIST_WR_CONTROL视图可以查看修改后的结果。
-
sql> select snap_interval, retention from DBA_HIST_WR_CONTROL;
-
SNAP_INTERVAL RETENTION
-
---------------------------------------
- +00000 01:00:00.0 +00008 00:00:00.0
2.3 管理baseline
2.3.1 关于baseline
baseline是一段特定时间内的snapshot的集合,当异常发生时,使用异常时间段的snapshot和baseline进行对比。baseline中的snapshot不受AWR retention的限制。
2.3.2 三类baseline
1.fixed baselines
oracle自动维护移动窗口基线,默认窗口大小为当前AWR保留期。窗口大小可以重置,但必须小于等于AWR保留期,如果要增大移动窗口,AWR保留期也必须相应增大。所以,在使用自适应阈值时,可以设置为30天,以获得更准确的阈值。
3. baseline templates
3. baseline templates
所谓基线模板,就是以后的基线都根据模板的配置生成,比如指定未来某个时间段,或者未来某个时期内的每周一的10:00-11:00。基线模板又分为单一基线模板(产生一次基线)、重复基线模板(产生多次基线)。
单一基线模板的例子:下周六09:00-11:00做测试,创建单一基线模板,到时自动收集AWR数据。
重复基线模板的例子:未来3个月每周周一上午09:00-11:00创建1个baseline。
2.3.3 创建baseline
默认情况,oracle自动维护移动窗口基线,我们可以手工创建固定基线。如下。snap_id可以从DBA_HIST_SNAPSHOT视图中选取。
- BEGIN
- DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE (
- start_snap_id => 270,
- end_snap_id => 280,
- baseline_name => 'peak baseline',
- dbid => 3310949047,
- expiration => 30);
- END;
- /
2.3.4 删除baseline
为了节约磁盘空间,可以手工删除baseline,已经生成的baseline可以通过DBA_HIST_BASELINE视图查看。下面例子中删除peak baseline,保留相应的snapshot,如果要删除相关的snapshot,设置cascade为true。
- BEGIN
- DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE (baseline_name => 'peak baseline',
- cascade => FALSE,
- dbid => 3310949047);
- END;
- /
2.3.5 重命名baseline
- BEGIN
- DBMS_WORKLOAD_REPOSITORY.RENAME_BASELINE (old_baseline_name => 'peak baseline',
- new_baseline_name => 'peak mondays',
- dbid => 3310949047);
- END;
- /
2.3.6 重置移动窗口基线窗口大小
移动窗口基线默认窗口大小与AWR保留期限相同,但也可以修改,但是不能超过AWR保留期限。下面例子将窗口设置为30天。
- BEGIN
- DBMS_WORKLOAD_REPOSITORY.MODIFY_BASELINE_WINDOW_SIZE (window_size => 30,
- dbid => 3310949047);
- END;
- /
2.3.7 创建单一基线模板
下面的例子比较简单,不做说明了。
- BEGIN
- DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE (
- start_time => to_date('2018-07-02 17:00:00','yyyy-mm-dd hh34:mi:ss'),
- end_time => to_date('2018-07-02 20:00:00','yyyy-mm-dd hh34:mi:ss'),
- baseline_name => 'baseline_180702',
- template_name => 'template_180702',
- expiration => 30,
- dbid => 3310949047);
- END;
- /
2.3.8 创建重复基线模板
下面的例子是从2018年7月2日17点开始,每周周一的17点至20点(duration=3)创建一个baseline,2018年12月02日20点template结束,不再创建以此为模板的baseline,创建的baseline失效期为30天。
- BEGIN
- DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE (
- day_of_week => 'monday',
- hour_in_day => 17,
- duration => 3, expiration => 30,
- start_time => to_date('2018-07-02 17:00:00','yyyy-mm-dd hh34:mi:ss'),
- end_time => to_date('2018-12-02 20:00:00','yyyy-mm-dd hh34:mi:ss'),
- baseline_name_prefix => 'baseline_2018_mondays_',
- template_name => 'template_2018_mondays',
- dbid => 3310949047);
- END;
- /
2.3.9 删除基线模板
基线模板名字可以冲DBA_HIST_BASELINE_TEMPLATE视图中选取。
- BEGIN
- DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE_TEMPLATE (
- template_name => 'template_180702',
- dbid => 3310949047);
- END;
- /
3. AWR报告是什么?
生成不同AWR报告的脚本:
本实例AWR报告 |
@?/rdbms/admin/awrrpt |
RAC中选择实例号 |
@?/rdbms/admin/awrrpti |
AWR 比对报告 |
@?/rdbms/admin/awrddrpt |
RAC全局AWR报告 |
@?/rdbms/admin/awrgrpt |
Reference:https://docs.oracle.com/en/database/oracle/oracle-database/18/tgdba/gathering-database-statistics.html#GUID-CBB1716F-2B20-4575-ADCE-94E33BEA53EF