

# 使用 Automatic Workload Repository (AWR) 生成性能报告
<a name="Appendix.Oracle.CommonDBATasks.AWR"></a>

要收集性能数据并生成报告，Oracle 建议使用 Automatic Workload Repository (AWR)。AWR 需要 Oracle Database Enterprise Edition 以及 Diagnostics and Tuning 包的许可证。要启用 AWR，请将 `CONTROL_MANAGEMENT_PACK_ACCESS` 初始化参数设置为 `DIAGNOSTIC` 或 `DIAGNOSTIC+TUNING`。

## 在 RDS 中使用 AWR 报告
<a name="Appendix.Oracle.CommonDBATasks.AWRTechniques"></a>

要生成 AWR 报告，您可以运行脚本，例如 `awrrpt.sql`。这些脚本安装在数据库主机服务器上。在 Amazon RDS 中，您无法直接访问主机。但是，您可以从其他 Oracle 数据库安装中获取 SQL 脚本的副本。

您还可以通过在 `SYS.DBMS_WORKLOAD_REPOSITORY` PL/SQL 软件包中运行过程来使用 AWR。您可以使用此软件包管理基准和快照，还可以显示 ASH 和 AWR 报告。例如，要生成文本格式的 AWR 报告，请运行 `DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT` 过程。但是，您无法从AWS 管理控制台访问这些 AWR 报告。

使用 AWR 时，我们建议使用 `rdsadmin.rdsadmin_diagnostic_util` 过程。您可以使用这些过程生成以下内容：
+ AWR 报告
+ Active Session History (ASH) 报告
+ Automatic Database Diagnostic Monitor (ADDM) 报告
+ AWR 数据的 Oracle Data Pump Export 转储文件

`rdsadmin_diagnostic_util` 过程将报告保存到数据库实例文件系统。您可以从控制台访问这些报告。您还可以使用 `rdsadmin.rds_file_util` 过程访问报告，并可以使用 S3 集成访问复制到 Amazon S3 的报告。有关更多信息，请参阅“[读取数据库实例目录中的文件](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles)”和“[Amazon S3 集成](oracle-s3-integration.md)”。

您可在以下 Amazon RDS for Oracle 数据库引擎版本中使用 `rdsadmin_diagnostic_util` 过程：
+ 所有 Oracle Database 21c 版本
+ 19.0.0.0.ru-2020-04.rur-2020-04.r1 或更高的 Oracle Database 19c 版本

有关解释如何在复制场景中使用诊断报告的博客，请参阅[为 Amazon RDS for Oracle 只读副本生成 AWR 报告](https://aws.amazon.com/blogs/database/generate-awr-reports-for-amazon-rds-for-oracle-read-replicas/)。

## 诊断实用程序软件包的通用参数
<a name="Appendix.Oracle.CommonDBATasks.CommonAWRParam"></a>

通常，您在通过 `rdsadmin_diagnostic_util` 软件包管理 AWR 和 ADDM 时可以使用以下参数。

<a name="rds-provisioned-iops-storage-range-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.AWR.html)

使用 rdsadmin\$1diagnostic\$1util 软件包管理 ASH 时，通常使用以下参数。

<a name="rds-provisioned-iops-storage-range-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.AWR.html)

## 生成 AWR 报告
<a name="Appendix.Oracle.CommonDBATasks.GenAWRReport"></a>

要生成 AWR 报告，请使用 `rdsadmin.rdsadmin_diagnostic_util.awr_report` 过程。

以下示例生成快照范围 101–106 的 AWR 报告。输出文本文件名为 `awrrpt_101_106.txt`。您可以通过AWS 管理控制台访问此报告。

```
EXEC rdsadmin.rdsadmin_diagnostic_util.awr_report(101,106,'TEXT');
```

以下示例生成快照范围 63–65 的 HTML 报告。输出 HTML 文件名为 `awrrpt_63_65.html`。该过程将报告写入名为 `AWR_RPT_DUMP` 的非默认数据库目录。

```
EXEC rdsadmin.rdsadmin_diagnostic_util.awr_report(63,65,'HTML','AWR_RPT_DUMP');
```

## 将 AWR 数据提取到转储文件
<a name="Appendix.Oracle.CommonDBATasks.ExtractAWR"></a>

要将 AWR 数据提取到转储文件中，请使用 `rdsadmin.rdsadmin_diagnostic_util.awr_extract` 过程。只能在 PDB 级别使用此功能。

以下示例提取范围 101–106 中的快照。输出转储文件名为 `awrextract_101_106.dmp`。您可以通过控制台访问此文件。

```
EXEC rdsadmin.rdsadmin_diagnostic_util.awr_extract(101,106);
```

以下示例提取范围在 63–65 中的快照。输出转储文件名为 `awrextract_63_65.dmp`。该文件存储在名为 `AWR_RPT_DUMP` 的非默认数据库目录中。

```
EXEC rdsadmin.rdsadmin_diagnostic_util.awr_extract(63,65,'AWR_RPT_DUMP');
```

## 生成 ADDM 报告
<a name="Appendix.Oracle.CommonDBATasks.ADDM"></a>

要生成 ADDM 报告，请使用 `rdsadmin.rdsadmin_diagnostic_util.addm_report` 过程。

以下示例生成快照范围 101–106 的 ADDM 报告。输出文本文件名为 `addmrpt_101_106.txt`。您可以通过控制台访问报告。

```
EXEC rdsadmin.rdsadmin_diagnostic_util.addm_report(101,106);
```

以下示例生成快照范围 63–65 的 ADDM 报告。输出文本文件名为 `addmrpt_63_65.txt`。该文件存储在名为 `ADDM_RPT_DUMP` 的非默认数据库目录中。

```
EXEC rdsadmin.rdsadmin_diagnostic_util.addm_report(63,65,'ADDM_RPT_DUMP');
```

## 生成 ASH 报告
<a name="Appendix.Oracle.CommonDBATasks.ASH"></a>

要生成 ASH 报告，请使用 `rdsadmin.rdsadmin_diagnostic_util.ash_report` 过程。

以下示例生成一个 ASH 报告，其中包含当前时间 14 分钟前的数据。输出文件的名称使用格式 `ashrptbegin_timeend_time.txt`，其中 `begin_time` 和 `end_time` 使用格式 `YYYYMMDDHH24MISS`。您可以通过控制台访问文件。

```
BEGIN
    rdsadmin.rdsadmin_diagnostic_util.ash_report(
        begin_time     =>     SYSDATE-14/1440,
        end_time       =>     SYSDATE,
        report_type    =>     'TEXT');
END;
/
```

以下示例生成一个 ASH 报告，其中包括从 2019 年 11 月 18 日下午 6 点 07 分到 2019 年 11 月 18 日下午 6 点 15 分的数据。输出 HTML 报告名为 `ashrpt_20190918180700_20190918181500.html`。该报告存储在名为 `AWR_RPT_DUMP` 的非默认数据库目录中。

```
BEGIN
    rdsadmin.rdsadmin_diagnostic_util.ash_report(
        begin_time     =>    TO_DATE('2019-09-18 18:07:00', 'YYYY-MM-DD HH24:MI:SS'),
        end_time       =>    TO_DATE('2019-09-18 18:15:00', 'YYYY-MM-DD HH24:MI:SS'),
        report_type    =>    'html',
        dump_directory =>    'AWR_RPT_DUMP');
END;
/
```

## 从控制台或 CLI 访问 AWR 报告
<a name="Appendix.Oracle.CommonDBATasks.AWRConsole"></a>

要访问 AWR 报告或导出转储文件，您可以使用 AWS 管理控制台 或 AWS CLI。有关更多信息，请参阅 [下载数据库日志文件](USER_LogAccess.Procedural.Downloading.md)。