暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

如何生成 AWR 报告和 AWR 基线

原创 刘旭 2020-04-25
1839

概述

AWR 是被 sys 用户拥有的一个存放系统性能指标的集合。
它存放于 SYSAUX 表空间. 默认情况下每60分钟产生一个 AWR 快照并且保留8天, 这样能确保捕获一周的性能指标数据(注意在 10g 中保留期是7天)。

AWR 报告输出一系列指标在两个快照之间的差值,用于研究数据库性能以及其他问题。

生成一个最基本的 AWR 报告

如果您拥有了相应的 AWR License 授权,那么您可以通过如下脚本来选择两个您想采用的快照,生成一个 AWR 报告:
$ORACLE_HOME/rdbms/admin/awrrpt.sql
基于不同的原因,通常可以采用默认的设置来产生 AWR 快照,但如果需要更精确的报告,那么可能需要采用更短的比如10-15分钟的快照。

在生成 AWR 报告的过程中,会要求提供产生的 AWR 报告格式(text 或者 html)以及报告的名称。

生成多种类型的 AWR 报告

可以通过不同脚本来产生不同类型的 AWR 用于满足不同的需求,所有的 AWR 报告都可以是 HTML 或者 TXT 格式:
awrrpt.sql
展示一段时间范围两个快照之间的数据库性能指标。
awrrpti.sql
展示一段时间范围两个快照之间的特定数据库和特定实例的性能指标。
awrsqrpt.sql
展示特定 SQL 在一段时间范围两个快照之间的性能指标,运行这个脚本来检查和诊断一个特定 SQL 的性能问题。
awrsqrpi.sql
展示特定 SQL 在特定数据库和特定实例的一段时间范围内两个快照之间的性能指标。
awrddrpt.sql
用于比较两个指定的时间段之间数据库详细性能指标和配置情况。
awrddrpi.sql
用于在特定的数据库和特定实例上,比较两个指定的时间段之间的数据库详细性能指标和配置情况。

AWR 快照

如何修改 AWR 快照的设置:

BEGIN
DBMS_WORKLOAD_REPOSITORY.modify_snapshot_settings(
retention => 43200, – 单位是分钟 (43200 = 30 Days)。
– 设置成 NULL 代表保持原来设置。
interval => 30); – 单位是分钟, 设置成 NULL 代表保持原来设置。
END;
/

手工创建一个 AWR 快照:

BEGIN
DBMS_WORKLOAD_REPOSITORY.create_snapshot();
END;
/

按照范围删除 AWR 快照:

BEGIN
DBMS_WORKLOAD_REPOSITORY.drop_snapshot_range(
low_snap_id=>40,
High_snap_id=>80);
END;
/

AWR 基线

生成 AWR 基线:

BEGIN
DBMS_WORKLOAD_REPOSITORY.create_baseline (
start_snap_id => 10,
end_snap_id => 100,
baseline_name => ‘AWR First baseline’);
END;
/

注意:在 11g 中引入了一个新的存储过程 DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE 可以制定一个模板来管理在未来时间怎样创建 AWR 基线:

BEGIN
DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE (
start_time => to_date(’&start_date_time’,’&start_date_time_format’),
end_time => to_date(’&end_date_time’,’&end_date_time_format’),
baseline_name => ‘MORNING’,
template_name => ‘MORNING’,
expiration => NULL ) ;
END;
/
“expiration => NULL” 代表这个基线将被永远保留。
删除 AWR 基线:
BEGIN
DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE (baseline_name => ‘AWR First baseline’);
END;
/

您也可以删除一个在其他数据库或者旧数据库中创建的 AWR 基线:

BEGIN
DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE (baseline_name => ‘peak baseline’,cascade => FALSE, dbid => 3310949047);
END;
/

我们也可以基于重复时间周期来制定用于创建和删除 AWR 基线的模板:

BEGIN
DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE (
day_of_week => ‘MONDAY’,
hour_in_day => 9,
duration => 3,
start_time => to_date(’&start_date_time’,’&start_date_time_format’),
end_time => to_date(’&end_date_time’,’&end_date_time_format’),
baseline_name_prefix => ‘MONDAY_MORNING’
template_name => ‘MONDAY_MORNING’,
expiration => 30 );
END;
/[Insert code here]

这样会在指定的时间’&start_date_time’ 到 '&end_date_time’期间的每个周一产生一个 AWR 基线

AWR 相关的视图

如下系统视图与 AWR 相关:
VACTIVE_SESSION_HISTORY - 展示每秒采样的 active session history (ASH)。 VMETRIC - 展示度量信息。
VMETRICNAME - 展示每个度量组的度量信息。 VMETRIC_HISTORY - 展示历史度量信息。
V$METRICGROUP - 展示所有的度量组。
DBA_HIST_ACTIVE_SESS_HISTORY - 展示 active session history 的历史信息。
DBA_HIST_BASELINE - 展示 AWR 基线信息。
DBA_HIST_DATABASE_INSTANCE - 展示数据库环境信息。
DBA_HIST_SNAPSHOT - 展示 AWR 快照信息。
DBA_HIST_SQL_PLAN - 展示 SQL 执行计划信息。
DBA_HIST_WR_CONTROL - 展示 AWR 设置信息。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论