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

上次更新时间:2019 年 8 月 30 日

如何检查运行 Oracle 的 Amazon Relational Database Service (Amazon RDS) 实例的性能统计数据,以便可以分析和优化数据库实例的性能?

简短描述

您可以在 RDS 数据库实例上使用 Oracle Statspack 收集、存储和显示性能数据。Statspack 会基于数据库快照生成报告,您可以使用这些报告分析一段时间内数据库实例的性能。有关更多信息,请参阅适用于 Statspack 的 Oracle 文档。

解决方法

在 Amazon RDS 上使用 Oracle Statspack

1.    如果存在 perfstat 用户,请通过运行以下命令删除 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.    以 perfstat 用户身份登录时,在 Amazon RDS 控制台中创建数据库快照,或运行以下命令以手动创建数据库快照:

SQL> exec statspack.snap (i_snap_level => 7, i_modify_parameter => 'TRUE');

注意:您也可以更改数据库快照捕获级别以获取更多详细信息。此示例命令将创建级别为 7 的数据库快照,其中包括 SQL 和执行计划的使用情况、行级锁和分段级别的 I/O 统计数据。

5.    (可选)配置 Oracle 以自动创建数据库快照。按照以下步骤操作将创建一个作业,该作业每小时自动创建一个数据库快照:

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.    要查看可用的数据库快照,请运行以下命令:

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 报告:

SQL> exec RDSADMIN.RDS_RUN_SPREPORT (11,12);

注意:此示例命令使用 SNAP_ID 11 和 12 创建报告,且报告名称类似于 trace/ORCL_spreport<INITIAL_SNAP_ID>_<FINAL_SNAP_ID>.lst。

8.    要查看和下载报告,请打开 Amazon RDS 控制台,然后从导航窗格中选择数据库。选择数据库实例,然后选择日志选项卡。

9.    已存储的数据库快照不会自动删除,它们可能会占用数据库实例上的存储空间。要手动清除数据库快照,请指定开始 SNAP_ID 和结束 SNAP_ID,如下所示:

SQL> execute statspack.purge(<INITIAL_SNAP_ID>, <END_SNAP_ID>);

在 Amazon RDS 上停止使用 Oracle Statspack

1.    要停止自动检索 Statspack,请删除您创建的作业。要获取作业编号,请运行以下命令:

SQL> select job, what FROM user_jobs;

2.    要删除作业,请运行以下命令:

SQL> execute dbms_job.remove (<job_id>);

注意:请务必将 job_id 替换为您自己的作业 ID。

从数据库选项组中删除 Statspack 选项后,系统将删除 perfstat 用户和数据库快照,并且将清除所有存储的数据库快照。


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助吗?