如何查看运行 Oracle 的 Amazon RDS 数据库实例的性能统计数据?

2 分钟阅读
0

我想要分析并调整运行 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

AWS 官方
AWS 官方已更新 2 年前