我想要分析并调整运行 Oracle 的 Amazon Relational Database Service(Amazon RDS)实例的性能。如何查看运行 Oracle 的 Amazon RDS 实例的性能统计数据?
概述
您可以在 Amazon RDS 数据库实例上使用 Oracle Statspack 来收集、存储和显示性能数据。Statspack 基于 Statspack 快照生成报告,然后您可以使用这些快照来分析数据库实例在一段时间内的性能。有关详细信息,请参阅 Oracle Statspack 的 Oracle 文档。
解决方法
在 Amazon RDS 上使用 Oracle Statspack
1. 如果安装了 Statspack,并且 PERFSTAT 账户与 Statspack 相关联,请跳到步骤 3。如果没有安装 Statspack,并且存在 PERFSTAT 账户,请运行下列命令来删除该账户:
SQL> DROP USER perfstat CASCADE;
2. 将 Statspack 选项添加到数据库选项组。如果没有选项组,请创建一个新的选项组,然后将该选项组分配给数据库实例。
3. 添加 Statspack 选项时,运行 Oracle 的 Amazon RDS 实例会自动安装 Statspack。这会创建一个 perfstat 用户来收集数据库统计数据并生成报告。但是,请注意,默认情况下,perfstat 用户处于锁定状态。如需解锁 perfstat 用户,请以 Amazon RDS 主用户身份登录数据库实例,然后通过运行以下类似内容的查询来重置 perfstat 用户密码:
ALTER USER perfstat IDENTIFIED BY <new_password> ACCOUNT UNLOCK;
**注意:**请务必将 new_password 替换为您自己的密码。
4. 如果使用的是 Oracle Database 12c 版本 2(12.2)或以下版本,请跳过此步骤。如果使用的是 Oracle Database 19c 以上版本,请运行以下语句来向 PERFSTAT 账户授予 CREATE JOB 权限:
GRANT CREATE JOB TO PERFSTAT;
5. 由于 Oracle 错误 28523746,可能无法填充 PERFSTAT.STATS$IDLE_EVENT 中的空闲等待事件。如需确保填充 PERFSTAT.STATS$IDLE_EVENT 表中的空闲等待事件,请运行此语句:
INSERT INTO PERFSTAT.STATS$IDLE_EVENT (EVENT)
SELECT NAME FROM V$EVENT_NAME WHERE WAIT_CLASS='Idle'
MINUS
SELECT EVENT FROM PERFSTAT.STATS$IDLE_EVENT;
COMMIT;
6. 以 perfstat 用户身份登录后,请运行此命令手动拍摄 Statspack 快照:
SQL> exec statspack.snap (i_snap_level => 7, i_modify_parameter => 'TRUE');
**注意:**您还可以更改 Statspack 快照捕获级别获取更多详细信息。此示例命令拍摄级别 7 的 Statspack 快照,其中包括 SQL 的使用情况、行锁定和分段级 I/O 统计信息。
7. 还可以将 Oracle 配置为自动拍摄 Statspack 快照。此过程创建了每小时自动拍摄一个 Statspack 快照的任务:
SQL> set serveroutput on
SQL> variable jn number;
SQL> execute dbms_job.submit (:jn, 'statspack.snap;', sysdate, 'trunc(SYSDATE+1/24,''HH24'')');
SQL> execute dbms_output.put_line ('statspack job number:' || :jn);
SQL> commit;
6. 如需查看可用的 Statspack 快照,请运行此命令:
SQL> set linesize 32767;
SQL> alter session set nls_date_format = 'YYYY/MM/DD HH24:MI:SS';
SQL> select snap_id, snap_time from stats$snapshot order by 1;
SNAP_ID SNAP_TIME
---------- -------------------
:: ::
11 2019/06/03 03:18:30
12 2019/06/03 04:18:30
:: ::
7. 创建两个以上 Statspack 快照后,通过运行与以下内容类似的命令来创建 Statspack 报告:
SQL> exec RDSADMIN.RDS_RUN_SPREPORT (11,12);
**注意:**此示例命令使用 11 和 12 的 SNAP_ID 创建报告,报告名称类似于 trace/ORCL_spreport
_
.lst.
8. 如需查看和下载报告,请打开 Amazon RDS 控制台,然后从导航窗格中选择数据库。选择数据库实例,然后选择日志和事件选项卡。
9. 存储的 Statspack 快照不会自动删除,这会消耗数据库实例上的存储空间。如需手动清除 Statspack 快照,请指定起始 SNAP_ID 和结束 SNAP_ID,如下所示:
SQL> execute statspack.purge(<INITIAL_SNAP_ID>, <END_SNAP_ID>);
停止在 Amazon RDS 上使用 Oracle Statspack
1. 如需停止自动创建快照,请删除您创建的作业。如需获取任务编号,请运行此命令:
SQL> select job, what FROM user_jobs;
2. 如需删除作业,请运行此命令:
SQL> execute dbms_job.remove (<job_id>);
**注意:**请务必将 job_id 替换为您自己的任务 ID。
从数据库选项组中删除 Statspack 选项后,perfstat 用户和所有存储的 Statspack 快照都将被清除。
相关信息
Oracle Statspack