Oracle Statspack - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Oracle Statspack

Oracle Statspack 选项安装并启用 Oracle Statspack 性能统计数据功能。Oracle Statspack 是收集、存储和显示性能数据的 SQL、PL/SQL 和 SQL*Plus 脚本的集合。有关使用 Oracle Statspack 信息,请参阅 Oracle 文档中的 Oracle Statspack

注意

Oracle 不再支持 Oracle Statspack,并用更高级的 Automatic Workload Repository (AWR) 取而代之。只有已购买 Diagnostics Pack 的 Oracle 企业版客户才能使用 AWR。您可以在 Amazon RDS 上将 Oracle Statspack 与任何 Oracle 数据库引擎一起使用。您无法在 Amazon RDS 只读副本上运行 Oracle Statspack。

设置 Oracle Statspack

要运行 Statspack 脚本,必须添加 Statspack 选项。

设置 Oracle Statspack
  1. 在 SQL 客户端中,使用管理账户登录到 Oracle 数据库。

  2. 根据是否安装了 Statspack,执行以下操作之一:

    • 如果已安装 Statspack ,并且 PERFSTAT 账户与 Statspack 关联,请跳到步骤 4。

    • 如果尚未安装 Statspack,并且 PERFSTAT 账户存在,请按如下方式删除账户:

      DROP USER PERFSTAT CASCADE;

      否则,尝试添加 Statspack 选项会生成错误和 RDS-Event-0058

  3. 将 Statspack 选项添加到选项组。请参阅将选项添加到选项组

    Amazon RDS 会自动在数据库实例上安装 Statspack 脚本,然后设置 PERFSTAT 账户。

  4. 使用以下 SQL 语句重置密码,并将 pwd 替换为新密码:

    ALTER USER PERFSTAT IDENTIFIED BY pwd ACCOUNT UNLOCK;

    您可以使用 PERFSTAT 用户账户登录并运行 Statspack 脚本。

  5. 根据您的数据库引擎版本,执行以下操作之一:

    • 如果您使用的是 Oracle Database 12c 第 2 版(12.2)或更低版本,请跳过此步骤。

    • 如果您使用的是 Oracle Database 19c 或更高版本,请使用以下语句向 CREATE JOB 账户授予 PERFSTAT 权限:

      GRANT CREATE JOB TO PERFSTAT;
  6. 确保填充 PERFSTAT.STATS$IDLE_EVENT 表中的空闲等待事件。

    由于 Oracle 错误 28523746,可能无法填充 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;

生成 Statspack 报告

Statspack 报告比较两个快照。

生成 Statspack 报告
  1. 在 SQL 客户端中,使用 PERFSTAT 账户登录到 Oracle 数据库。

  2. 使用以下任一方法创建快照:

    • 手动创建 Statspack 快照。

    • 创建一个在给定时间间隔后拍摄 Statspack 快照的作业。例如,以下作业每小时创建一个 Statspack 快照:

      VARIABLE jn NUMBER; exec dbms_job.submit(:jn, 'statspack.snap;',SYSDATE,'TRUNC(SYSDATE+1/24,''HH24'')'); COMMIT;
  3. 使用以下查询查看快照:

    SELECT SNAP_ID, SNAP_TIME FROM STATS$SNAPSHOT ORDER BY 1;
  4. 运行 Amazon RDS 过程 rdsadmin.rds_run_spreport,用快照 ID 替换 begin_snapend_snap

    exec rdsadmin.rds_run_spreport(begin_snap,end_snap);

    例如,以下命令基于 Statspack 快照 1 和 2 之间的间隔创建报告:

    exec rdsadmin.rds_run_spreport(1,2);

    Statspack 报告的文件名包括两个快照的编号。例如,使用 Statspack 快照 1 和 2 创建的报告文件将命名为 ORCL_spreport_1_2.lst

  5. 监视输出是否存在错误。

    Oracle Statspack 会在运行报表之前执行检查。因此,您还可以在命令输出中看到错误消息。例如,您可能会尝试基于无效范围生成报告,其中起始 Statspack 快照值大于结束值。在这种情况下,输出显示错误消息,但数据库引擎不会生成错误文件。

    exec rdsadmin.rds_run_spreport(2,1); * ERROR at line 1: ORA-20000: Invalid snapshot IDs. Find valid ones in perfstat.stats$snapshot.

    如果您使用的 Statspack 快照编号无效,则输出将显示错误。例如,如果您尝试为快照 1 和 50 生成报告,但快照 50 不存在,则输出将显示错误。

    exec rdsadmin.rds_run_spreport(1,50); * ERROR at line 1: ORA-20000: Could not find both snapshot IDs
  6. (可选)

    要检索报告,请调用跟踪文件过程,如 使用 Oracle 跟踪文件 中所述。

    或者,从 RDS 控制台下载 Statspack 报告。转到数据库实例详细信息的日志部分,然后选择下载

    如果在生成报告时发生错误,则数据库引擎使用与报告相同的命名约定,但扩展名为 .err。例如,如果在使用 Statspack 快照 1 和 7 创建报告时出错,报告文件将命名为 ORCL_spreport_1_7.err。您可以使用与标准快照报告相同的方法下载错误报告。

删除 Statspack 快照

要删除一系列 Oracle Statspack 快照,请使用以下命令:

exec statspack.purge(begin snap, end snap);