AWR 基线中的增强功能

基线是在一段时间内拍摄的任何一组快照。选择快照时,将生成一组基线,这些基线会在您收集数据的时间段内发生更改。基线捕获一组基线统计信息的基于时间的变化,并在当前值与基线值显著不同时提醒您。AWR 基线包含一组在一段时间内收集的 AWR 快照,这些快照为已知的“良好时间段”提供了参考框架,然后您可以使用该参考框架来比较另一个感兴趣时间段内的性能。对 AWR 基准中的快照进行分组,以提供一组随时间变化的基准值。例如,在数据库中的高峰使用时间,I/O 速率最高。在设置警报阈值时遇到的最困难问题之一是将这些阈值设置为相应警报的正确级别。自始至终保持相同的任意警报不是最佳选择,因为它们可能会错过实际生产数据库工作负载中的自然峰值和谷值。另一方面,基线是设置与时间相关的警报阈值的理想选择,因为基线允许数据库通过将当前性能与类似时间段的基线数据进行比较,将苹果与苹果进行比较,将橙子与橙子进行比较。

Oracle 数据库 11g 使您能够收集两种类型的基线:静态基线和移动窗口基线。静态基线可以是在单个固定时间段内(例如,从 2008 年 1 月 1 日上午 10:00 到 2008 年 1 月 1 日中午 12:00)收集的单个基线,也可以是在重复时间段内(例如,2008 年每月的第一个星期一从上午 10:00 到中午 12:00)收集的重复基线。移动窗口基线通过随时间不断移动的窗口捕获数据。默认情况下,Oracle 数据库 11g 会创建系统定义的移动窗口基线。此默认移动窗口对应于在 AWR 保留期内捕获的 AWR 数据,该保留期现在是 8 天,而不是 Oracle 数据库 10g 版本中的 7 天。

基线可帮助您设置警报阈值、监视性能和比较顾问报告。这是对Oracle数据库10g版本的明确改进,在Oracle数据库10g版本中,您真正可以使用AWR基准所做的就是创建和删除静态单个基准。Oracle 数据库 11g 为 AWR 基准功能提供了多项增强功能,其中包括:

  • 用于计划创建基线的比较基准模板
  • 移动窗口基线,从中可以指定自适应阈值
  • AWR 基准指标阈值

单个自动水堆基线

与 Oracle 10g 相比,Oracle 11g 中的固定或静态基线功能更加灵活。最初,DBMS_WORKLOAD_REPOSITORY包包含一个CREATE_BASELINE过程,允许您使用特定的快照 ID 定义基线。它现在包括重载的过程和函数,允许使用开始和结束时间创建基线,这些基线用于估计相关的快照 ID。这些函数具有与过程相同的参数列表,但返回基线 ID。默认情况下,基线将永久保留,但新的过期参数允许它们在指定的天数后自动过期。
在声明
l_return编号时
设置服务器输出;
开始
-- 使用过程。
DBMS_WORKLOAD_REPOSITORY.create_baseline(
start_snap_id = > 2490,
end_snap_id = > 2491,
baseline_name = > “test1_bl”,
过期 = > 60);
DBMS_WORKLOAD_REPOSITORY.create_baseline(
start_time = > TO_DATE(“2008 年 7 月 9 日 17:00”,“日单年 24:MI”),
end_time = > TO_DATE(“2008 年 7 月 9 日 18:00”,“日单 YYYYH24:MI”),
baseline_name = > “test2_bl”,
过期时间 => 空值);
-- 使用函数。
l_return := DBMS_WORKLOAD_REPOSITORY.create_baseline(
start_snap_id = > 2492,
end_snap_id = > 2493,
baseline_name = > “test3_bl”,
过期 = > 30);
DBMS_OUTPUT.推杆线(“返回:”|| l_return);
l_return := DBMS_WORKLOAD_REPOSITORY.create_baseline(
start_time = > TO_DATE(“2008 年 7 月 9 日 19:00”,“日周一 YYYYH24:MI”),
end_time = > TO_DATE(“2008 年 7 月 9 日 20:00”、“日周一 24:MI”)、
baseline_name =>“test4_bl”,
到期日 = > 空值);
DBMS_OUTPUT.推杆线(“返回:”|| l_return);
结束;
/
返回: 8
返回: 9
PL/SQL 过程已成功完成。
新基线在视图中可见DBA_HIST_BASELINE。
列baseline_name格式 A15
选择baseline_id、baseline_name、START_SNAP_ID、
TO_CHAR(start_snap_time、“日周一-YYYH24:MI”)作为start_snap_time、
END_SNAP_ID、
TO_CHAR(end_snap_time、“日蒙-年-日叶HH24:MI”)作为
dba_hist_baseline end_snap_time
,其中baseline_type=“静态”
按baseline_id排序;
BASELINE_ID BASELINE_NAME START_SNAP_ID START_SNAP_TIME END_SNAP_ID END_SNAP_TIME
----------- --------------- ------------- ----------------- ----------- -----------------
6 test1_bl 2490 09-七月-2008 17:00 2491 09-七月-2008 18:00
7 test2_bl 2490 09-JUL-2008 17:00 2491 09-JUL-2008 18:00
8 test3_bl 2492 09-七月-2008 19:00 2493 09-JUL-2008 20:00
9 test4_bl 2492 09-JUL-2008 19:00 2493 09-JUL-2008 20:00 2493 20:00
已选择 4 行。

DBA_HIST_BASELINE_DETAILS视图显示有关所有 AWR 基线的详细信息。
SQL>描述dba_hist_baseline_details
名称为空?类型
------------------------------ -------- --------------
DBID 编号
INSTANCE_NUMBER编号
BASELINE_ID 编号
BASELINE_NAME VARCHAR2(64)
BASELINE_TYPE VARCHAR2(13)
START_SNAP_ID编号
START_SNAP_TIME时间戳(3)
END_SNAP_ID编号
END_SNAP_TIME时间戳(3)
关闭编号 2(3)
ERROR_COUNT编号
PCT_TOTAL_TIME数字
LAST_TIME_COMPUTED 日期
MOVING_WINDOW_SIZE CREATION_TIME
日期
到期编号
TEMPLATE_NAME VARCHAR2(64)

  • 关闭:指示数据库是否在此时间段内关闭。可能的值为“是”、“否”和“空”。
  • PCT_TOTAL_TIME:快照所跨越的时间量除以基线的总可能时间。
  • ERROR_COUNT:基准快照范围内的快照中的错误数。
  • BASELINE_TYPE:可能的值为“静态”、“MOVING_WINDOW”和“已生成”。静态窗口是您手动创建的其他窗口。对于移动的窗口基线,开始和结束快照 ID 是动态的。生成的基线是由数据库基于模板自动创建的基线。
  • MOVING_WINDOW_SIZE:此属性的值取决于BASELINE_TYPE属性的值。如果BASELINE_TYPE为 NULL,则移动窗口大小与 AWR 保留期的值相同。如果BASELINE_TYPE MOVING_WINDOW,则MOVING_WINDOW_SIZE属性的值与移动窗口的天数相同。

有关特定基线的信息可以通过使用SELECT_BASELINE_DETAILS流水线表函数
选择 *从表中选择BASELINE_ID
来显示(DBMS_WORKLOAD_REPOSITORY.选择_基线_详细信息(6));
使用RENAME_BASELINE过程重命名基线。
开始
DBMS_WORKLOAD_REPOSITORY.rename_baseline(
old_baseline_name =>“test4_bl”,
new_baseline_name =>“test5_bl”);
结束;
/
使用DROP_BASELINE过程删除基线。
开始
DBMS_WORKLOAD_REPOSITORY.drop_baseline(baseline_name =>“test1_bl”);
DBMS_WORKLOAD_REPOSITORY删除基线(baseline_name =>“test2_bl”);
DBMS_WORKLOAD_REPOSITORY删除基线(baseline_name =>“test3_bl”);
DBMS_WORKLOAD_REPOSITORY删除基线(baseline_name =>“test5_bl”);
结束;

/

基线模板

基线模板跨越的时间段可以位于将来,也可以包含过去的时间线。无论您选择哪个时间范围,可管理性基础架构都会自动生成任务并立即创建基线。每天晚上,MMON(内存监视器后台进程)任务都会检查您创建的任何基线模板的结束时间是否已过。如果它发现用于生成基线的模板包含完整的时间范围,它将为基线模板指定的时间段创建基线。除了它将删除过期的基线模板外,该信息还参考DBA_HIST_BASELINE_TEMPLATE视图。您可以创建两种类型的基线模板 - 单个基线模板或重复基线模板。

您可以计划为连续的未来时间段(如已知的高使用期)创建 AWR 基线。然后,使用单个 AWR 基线模板,您可以自动捕获指定时间段内的性能基线。下面的示例演示如何使用CREATE_BASELINE_TEMPLATE过程创建单个基线模板:
BEGIN
DBMS_WORKLOAD_REPOSITORY.create_baseline_template(
start_time = > TO_DATE(“2008 年 12 月 1 日 00:00”,“日end_time-周一-YYYY HH24:MI”),
end_time = > TO_DATE(“01-2008 年 12 月 2008 05:00”,“日单 YYYY HH24:MI”),
baseline_name =>“01_dec_008_00_05_bl”,
template_name =>“01_dec_008_00_05_tp”,
到期时间 => 100);
结束;

/

可选的过期参数指定此基线将在 100 天后过期。为过期参数设置的值指定数据库将维护基线的时间长度。如果未指定过期时间段 (NULL),则基线将永不过期。baseline_name和template_name参数是不言自明的。start_时间和end_time参数指定快照开始和结束时间段。您还可以指定 DBID 参数,但如果省略该参数,则其值默认为 NULL,如本例所示。

您可以创建重复的基线模板,以安排在已知时间段(例如,全年每周五下午 3:00 左右)创建 AWR 基线。数据库将在每个星期五自动创建一个新基线,您也可以让数据库在指定的过期时间后自动删除较旧的基线。下面介绍如何再次使用CREATE_BASELINE_TEMPLATE过程创建重复的基线模板:

开始
DBMS_WORKLOAD_REPOSITORY.create_基线_模板(
day_of_week = > “星期一”,
hour_in_day = > 0,
持续时间 = > 5,
start_time = > 系统日期,
end_time = > ADD_MONTHS(SYSDATE, 6),
baseline_name_prefix = > “monday_morning_bl_”,
template_name = > “monday_morning_tp”,
过期 = > NULL,

数据库编号 => 12345);
结束;
/
以下是CREATE_BASELINE_TEMPLATE过程中各种参数值的简要说明:

  • DAY_OF_THE_WEEK:指定基线将重复的星期几,可以是一周中七天中的任何一天。
  • HOUR_IN_DAY:允许您指定一个介于 0 和 23 之间的值,以确定基线的起始时间。
  • 持续时间:基线应持续的小时数。
  • START_TIME:开始生成基线的时间,通过转换为最近的快照 ID 来确定。
  • END_TIME:停止生成基线的时间,通过转换为最近的快照 ID 来确定。
  • BASELINE_NAME_PREFIX:指定基线前缀,该前缀将追加到日期信息中。
  • TEMPLATE_NAME:指定重复基线模板的名称。
  • 过期:数据库将维护基线的天数。默认值为 NULL,这意味着数据库将始终维护基线,并且永远不会删除它。
  • 数据库 ID:数据库标识符。默认值为空。

有关基线模板的信息使用DBA_HIST_BASELINE_TEMPLATE视图显示。
选择template_name,
template_type,
baseline_name_prefix,
start_time,
end_time,
day_of_week,
hour_in_day,
持续时间,
dba_hist_baseline_template到期
;
TEMPLATE_NAME TEMPLATE_ BASELINE_NAME_PREFIX START_TIME
------------------------------ --------- ------------------------------ --------------------
END_TIME DAY_OF_WE HOUR_IN_DAY 持续时间 到期日
-------------------- --------- ----------- ---------- ----------
01_dec_008_00_05_tp 单01_dec_008_00_05_bl 01-DEC-2008 00:00:00
01-DEC-2008 05:00:00 100
monday_morning_tp 重复monday_morning_bl_ 11-JUL-2008 14:43:36
11-JAN-2009 14:43:36 星期一 0 5
2 行已选择。
请注意,BASELINE_NAME_PREFIX列包含前缀或完整基线名称,具体取决于要捕获的基线类型。
使用DROP_BASELINE_TEMPLATE过程删除基线模板。
开始
DBMS_WORKLOAD_REPOSITORY删除基线模板(template_name =>“01_dec_008_00_05_tp”);
DBMS_WORKLOAD_REPOSITORY删除基线模板(template_name =>“monday_morning_tp”);
结束;

/

移动窗口 AWR 基线

Oracle 数据库 11g 为您提供了静态基线和移动窗口基线之间的选择。它还允许您创建单个静态基线和重复静态基线。您可以创建移动窗口 AWR 基线,而不是与固定的连续过去时间段相对应的固定基线。默认情况下,Oracle 会创建并维护系统定义的移动窗口基线。移动窗口基线包含 AWR 保留期内的 AWR 数据,默认情况下为八天。(在 Oracle 数据库 11g 中,默认保留期已从之前的七天保留期增加到八天。此默认移动窗口基线称为system_moving_window。

Oracle 将此窗口的统计信息收集安排在每个星期日的午夜进行。此基线的天数设置始终为 null,从而使窗口大小与 AWR 保留设置的持续时间完全匹配。企业管理器使用系统定义的基线作为缺省值,以将性能与当前数据库性能进行比较。

使用自适应阈值时,移动窗口基线特别有用,因为这样就可以利用整个 AWR 保留期的数据来计算所选指标阈值的值。默认情况下,自适应阈值功能使用默认移动窗口基线(SYSTEM_MOVING_WINDOW基线)上的统计信息。但是,如果您正在考虑使用自适应阈值,Oracle 建议您使用更大的移动窗口(如 30 天),而不是默认的 AWR 保留期 8 天。由于移动窗口基线取决于 AWR 数据,因此其范围可以超过 AWR 保留期的长度或较短的时间跨度。如果要增加移动窗口的大小,请确保首先增加 AWR 保留期的大小。使用MODIFY_BASELINE_WINDOW_SIZE过程调整默认移动窗口基线大小为 8 天。以下示例将移动窗口基线大小设置为 20 天:

可以通过查询DBA_HIST_WR_CONTROL视图的“保留”列来显示当前的 AWR 保留期。
SQL> 从dba_hist_wr_control中选择保留;
保留
---------------------------------------------------------------------------
+00008 00:00:00.0
选中 1 行。
使用“MODIFY_SNAPSHOT_SETTINGS”过程更改保留期,该过程接受“保留”参数(以分钟为单位)。
开始
DBMS_WORKLOAD_REPOSITORY.修改快照设置(
保留期 => 43200);-- 分钟(= 30 天)。
结束;
/
SQL> 从dba_hist_wr_control中选择保留期;
保留
---------------------------------------------------------------------------
+00030 00:00:00.0
选中 1 行。
当前移动窗口大小通过查询DBA_HIST_BASELINE视图来显示。
SQL>
从dba_hist_baseline baseline_type=“MOVING_WINDOW”
中选择moving_window_size;
MOVING_WINDOW_SIZE
------------------
8
选中 1 行。
移动窗口基线的大小使用MODIFY_BASELINE_WINDOW_SIZE过程进行更改,该过程接受以天为单位的WINDOW_SIZE参数。
开始
DBMS_WORKLOAD_REPOSITORY.修改基线窗口大小(
window_size => 20);
结束;
/
SQL>
从dba_hist_baseline中选择moving_window_size,
其中baseline_type = “MOVING_WINDOW”;
MOVING_WINDOW_SIZE
------------------
20
选中 1 行。

设置 AWR 基准指标阈值

有时,您希望检查基线所跨越的时间段的指标阈值设置。使用基线中包含的 AWR 数据,可以计算指标阈值。使用SELECT_BASELINE_METRICS函数显示基线选择 * 从表(DBMS_WORKLOAD_REPOSITORY选择_基线_指标(“peak_baseline”)所涵盖的期间内的指标值统计信息;

前面的代码将显示名为 peak_baseline 的基线的指标阈值。

Oracle 数据库 11g 提供了一个内置的警报基础架构,可针对数据库中的潜在问题向您发出警告。缺省警示包括与表空间使用情况、恢复区域空间问题、已挂起的可恢复会话以及“快照太旧”错误相关的警示。但是,还可以根据与性能相关的指标阈值指定自定义性能警报。例如,当任何一个会话阻止的用户数超过您设置的指标阈值时,blocked_user阈值会发出警报。

性能警报阈值可能难以确定,因为预期的指标值会因工作负荷的类型和数量而异。使用基线,您可以捕获指标值统计信息。如果基线是静态的,则可以手动计算基线上的指标值统计信息。如果您使用的是系统移动窗口,则数据库可以自动计算移动窗口中的衡量指标值统计信息。然后,可以使用基线指标统计信息来定义特定于基线的警报阈值。

基线捕获指标值,然后数据库会将这些指标值与当前性能指标进行比较,以判断当前性能在已知良好期间的表现与性能的对比情况。如果存在严重差异(即,如果预期值与当前实际统计信息有很大不同),数据库将发出性能警报。无论是使用手动计算的静态基线,还是在系统移动窗口中自动计算的基线,都会将基线值与当前统计信息进行比较,以查看警报是否合理。自适应阈值之所以如此命名,是因为阈值不是固定的,而是根据数据库中的条件而变化 - 它们适应工作负荷的类型和数量。

数据库根据BSLN_MAINTAIN_STATS_SCHED计划从系统移动窗口计算统计信息。

通过您在基线上捕获的指标统计信息,您可以设置阈值以将基线统计信息与当前活动进行比较。您可以使用三种不同的阈值类型,如下所述:

  • 显著性水平 基于显著性水平的阈值使用统计显著性来确定与基线值相比,当前观测到的水平是否异常,因此值得警惕。例如,如果将某个指标的显著性级别设置为 0.99,则在观察到的指标值的 1% 超出指标设置的值的情况下,将设置警报阈值。因此,当 1% 的指标值与预期指标值不同时,数据库将发出警报。请注意,显著性级别越高,数据库发出的警报数就越少。例如,与显著性水平 0.999 相比,显著性水平 0.999 将导致引发的警报更少。
  • 最大值的百分比 如果观察到的指标等于或高于指定最大值的百分比,则会生成警报。例如,如果将 120 指定为最大值的百分比,其中基线捕获的最大值为 1000,则当观察到的指标超过 1200(最大值 (1000) 的 120%)时,数据库将发出警报。
  • 固定值 固定值是标准的企业管理器固定阈值,数据库将其与实际指标进行比较。DBA 设置固定值,无需任何 AWR 基线。

Oracle 数据库 11g 将性能指标的自适应阈值选择与 AWR 基准完全集成,基准用作指标的来源。数据库通过检查在基线时间段内捕获的指标统计信息来确定警报阈值。因此,数据库根据数据库本身提供的数据设置阈值,您不必知道任何特定于系统的指标。数据库根据系统数据本身和您提供的某些元数据设置阈值。使用企业管理器,可以根据 OLTP 或数据仓库工作负荷配置文件选择一组入门阈值。

选择适当的工作负荷配置文件后,数据库将根据默认SYSTEM_MOVING_WINDOW基线自动配置和维护自适应阈值。自适应阈值将涵盖适用于所选工作负荷配置文件的所有指标。配置自适应阈值后,可以编辑阈值级别。编辑阈值级别时,Oracle 建议您在开始时保守地设置初始显著性级别阈值,因为非常高的显著性级别将使警报数保持在较低水平。

 

参考至:《McGraw.Hill.OCP.Oracle.Database.11g.New.Features.for.Administrators.Exam.Guide.Apr.2008》

http://www.oracle-base.com/articles/11g/awr-baseline-enhancements-11gr1.php

本文原创,转载请注明出处、作者

如有错误,欢迎指正