创建一个中央化的 Oracle AWR 报告存储库,使用 Amazon EFS 集成 Amazon
通过 Amazon EFS 创建 Oracle AWR 报告的集中存储库
关键要点
在这篇文章中,我们将展示如何创建一个集中存储库来保存 Oracle AWR 报告,以有效管理和维护数据库性能数据。通过使用 Amazon EFS 和 Amazon EC2,您可以确保数据的长期保留,并且能够更轻松地进行性能分析和故障排查。
在日常活动中,您可以使用 Amazon RDS 提供的托管数据库服务,减轻许多不必要的管理工作。利用 Amazon RDS for Oracle,您可以大幅降低管理和维护 Oracle 数据库的行政开销。
Oracle 自动工作负载库AWR提供了 Oracle 数据库性能和资源使用情况的全面视图。AWR 收集并维护数据库资源使用的性能统计信息,能够帮助诊断和解决性能问题。您可以通过保留期来控制 AWR 快照的数据保留时间,但是如果保留期设置过高,SYSAUX 表空间的大小可能会意外增长,导致潜在的数据库问题。为了避免这种情况,Amazon RDS for Oracle 不允许用户截断 SYSAUX 表空间中的对象。
为了避免这些问题,建立一个 AWR 报告的集中存储库是维护历史性能数据的有效方式。本文示范了如何在需要更高保留期的情况下创建这样的集中存储库。我们将使用 Amazon Elastic Compute CloudAmazon EC2、Amazon Elastic File SystemAmazon EFS以及其与 RDS for Oracle 实例的集成。
解决方案概述
Oracle AWR 仓库是配置用于长期 AWR 数据保留的集中存储库,能够从多个数据库源存储 AWR 快照。通常,在生产系统中增加 AWR 保留时间会增加关键业务数据库的开销和成本。因此,将 AWR 快照卸载到集中存储库中是更可行的方案。AWR 默认保留期为 8 天,而 AWR 仓库的默认保留期是永久的,您也可以根据需要配置为几周、几个月或几年。
以下图示展示了我们的解决方案架构:

集中存储 AWR 报告的主要好处包括:
优势描述存储历史性能数据提供数据库性能的历史视角,帮助识别趋势与问题。识别资源密集型 SQL 和数据库对象分析性能数据以监控资源使用情况,帮助计划未来需求。进行趋势分析比较不同时间段的性能数据,主动解决可能的性能问题。生成报告提供集中化位置生成性能报告,以便与管理层和其他团队进行沟通。管理 SYSAUX 表空间简化对 SYSAUX 表空间的管理和维护工作。要监控 SYSAUX 表空间的增长,您可以查询 VSYSAUXOCCUPANTS 视图,查看使用最多空间的组件:
sqlSELECT occupantname spaceusagekbytes FROM vsysauxoccupants ORDER BY 2 DESC
先决条件
在开始之前,请确保具备以下先决条件:
拥有一个 AWS 账户,并具有创建和管理 Amazon RDS、Amazon EC2 和 VPC 相关资源的 AWS 身份和访问管理IAM权限。在 EC2 实例上需要有一个 Oracle 数据库。AWR 报告随 Oracle 数据库企业版提供。此功能要求安装企业版及诊断与调优选项。使用此功能之前,请确保获得正确的许可。由于 Amazon RDS 是一种托管服务,写本文时 Amazon RDS for Oracle 不支持 DBMSSWRFINTERNALAWRLOAD。因此,对于本演示,我们在托管在 Amazon EC2 上的 Oracle 中创建集中存储库。数据库用户应具有导出和导入 AWR 报告的权限。接下来,我们将提供逐步指南来设置一个 AWR 报告的集中存储库。
在 AWS 账户中创建 EFS 文件系统
要创建 EFS 文件系统,打开 Amazon EFS 控制台并选择 创建文件系统。选择适当的设置,例如性能模式和吞吐量。AWR 报告将存储于此位置。
将 EFS 文件系统挂载到 Amazon EC2
在您的 EC2 实例上安装所需的 Oracle 软件,包括创建数据库和 EFS 挂载助手。EFS 挂载助手是 AWS 提供的一种工具,可以方便地将 EFS 文件系统挂载到 EC2 实例上。参考以下代码:
bash mkdir /mnt/efs/fs2 sudo mount t efs o tls fs0590179460895f626/ /mnt/efs/fs2
在 Amazon RDS for Oracle 中创建 Oracle 目录
为了在 RDS for Oracle 实例和 EFS 文件系统之间传输文件,您需要在 Amazon RDS for Oracle 中创建一个 Oracle 目录:
sqlBEGIN rdsadminrdsadminutilcreatedirectoryefs( pdirectoryname =gt DATAPUMPDIRRDS ppathonefs =gt /rdsefsfs0590179460895f626/awrexports)END/
有关更多信息,请参见 将 Amazon RDS for Oracle 与 Amazon EFS 集成。
提取 AWR 数据
要手动提取 AWR 数据到转储文件中,请使用 rdsadminrdsadmindiagnosticutilawrextract 过程。以下示例代码手动提取快照范围 8434484345:
sqlSQLgt EXEC rdsadminrdsadmindiagnosticutilawrextract(8434484345DATAPUMPDIRRDS)
输出转储文件名为 awrextract8434484345dmp,该文件存储在名称为 DATAPUMPDIRRDS 的非默认数据库目录中。请确认提取文件 awrextract8434484345dmp 已在共享 EFS 文件系统中创建。
或者,您可以使用 DBMSSCHEDULER 包创建一个调度程序,从而动态提取最新快照:
sqlCREATE OR REPLACE PROCEDURE generateawrreport AS jobid NUMBER startsnapid NUMBER endsnapid NUMBERBEGIN 查找最近两个快照 ID SELECT MIN(snapid) MAX(snapid) INTO startsnapid endsnapid FROM ( SELECT snapid FROM dbahistsnapshot WHERE endintervaltime gt sysdate 1 ORDER BY endintervaltime DESC ) WHERE ROWNUM lt 3
rdsadminrdsadmindiagnosticutilawrextract(startsnapid endsnapid DATAPUMPDIRRDS)
END/
sqlBEGIN DBMSSCHEDULERCREATEJOB ( jobname =gt ADMINAWREXTRACTJOB jobtype =gt PLSQLBLOCK jobaction =gt BEGIN ADMINGENERATEAWRREPORT END numberofarguments =gt 0 startdate =gt TOTIMESTAMPTZ(20230905 180500000000000 AMERICA/NEWYORKYYYYMMDD HH24MISSFF TZR) repeatinterval =gt FREQ=HOURLYBYTIME=0500BYDAY=MONTUEWEDTHUFRISATSUN enddate =gt NULL enabled =gt FALSE autodrop =gt TRUE comments =gt )
DBMSSCHEDULERSETATTRIBUTE( name =gt ADMINAWREXTRACTJOB attribute =gt storeoutput value =gt TRUE)DBMSSCHEDULERSETATTRIBUTE( name =gt ADMINAWREXTRACTJOB attribute =gt logginglevel value =gt DBMSSCHEDULERLOGGINGOFF)DBMSSCHEDULERenable(name =gt ADMINAWREXTRACTJOB)
END/
在 Amazon EC2 上的 Oracle 中创建 Oracle 目录
创建一个名为 DATAPUMPDIREC2 的 Oracle 目录,指向挂载在 EC2 实例上的 EFS 文件系统:
sqlSQLgt CREATE OR REPLACE DIRECTORY DATAPUMPDIREC2 AS /mnt/efs/fs2/awrexports
将 AWR 报告导入集中存储库中
通过 awrloadsql 过程将 AWR 报告导入集中数据库:
bash
!/bin/bash
directoryname=DATAPUMPDIREC2dumpfile=awrextract8434484345awrusr=TESTawrtbs=USERSawrtmp=TEMP
awrload=sqlplus s /nolog ltltEOLconnect / as sysdbaspool logfiledefine directoryname=directorynamedefine filename=dumpfiledefine schemaname=awrusrdefine defaulttablespace=awrtbsdefine temporarytablespace=awrtmp@/rdbms/admin/awrloadsqlspool offexitEOL
您也可以手动使用以下过程:
sqlSQLgt @/rdbms/admin/awrloadsqlAWR LOAD 此脚本将从转储文件加载 AWR 数据。 脚本将提示用户输入以下信息: (1) 目录对象名称 (2) 要加载的转储文件名称 (3) 要加载 AWR 数据的临时架构名称
Enter value for directoryname DATAPUMPDIREC2Enter value for filename awrextract8434484345
Loading from the file name awrextract8434484345dmp
现在,您应该能够看到导入的数据库快照的数据库 ID 为 659205682。您可以查询以检索当前存在的所有数据库 ID 及其对应的快照 ID 和开始结束时间:
sqlSQLgt SELECT DBID max(SNAPID) max(BEGININTERVALTIME) min(SNAPID) min(BEGININTERVALTIME) FROM dbahistsnapshot GROUP BY dbid
从集中存储库生成 AWR 报告
我们使用 awrrptisql 脚本为指定时间范围生成特定实例级别的 AWR 报告。在集中 Oracle 实例上使用 SQLPlus 运行该脚本,并提供必要的参数,例如数据库 ID、开始和结束快照及输出格式:
安易加速器永久免费版sqlSQLgt @/rdbms/admin/awrrptisql
我们成功生成了集中数据库的 AWR 报告 awrrpt18434484345html。
清理
如果您不再需要本文创建的资源,请删除它们。
删除 EFS 文件系统终止 EC2 实例结论
在本文中,我们展示了如何创建一个 Oracle AWR 报告的集中存储库。通过实施集中 AWR 报告,管理员可以提高性能,减少访问性能数据所需的时间和精力,并确保在性能问题成为严重问题之前得到解决。
如您有任何问题或建议,请留言。
作者介绍
Sudhakar Darse 是 AWS 的数据库专家解决方案架构师。他与 AWS 客户合作,提供数据库服务的指导和技术支持,帮助他们迁移数据库到 AWS 云上,并提高其解决方案的价值。
Sarabjeet Singh 是亚马逊网络服务的数据库专家解决方案架构师。他与客户合作,提供数据库项目的指导和技术支持,帮助他们在 AWS 上提升解决方案的价值。
Robert Daly 是 AWS 的高级数据库专家解决方案架构师,专注于 Amazon RDS、Amazon Aurora 和 AWS DMS。他已经帮助多家企业客户迁移其数据库到 AWS,并提供性能和最佳实践方面的支持。他乐于帮助客户构建技术解决方案,解决商业问题。