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
-
在 SQL 客户端中,使用管理账户登录到 Oracle 数据库。
-
根据是否安装了 Statspack,执行以下操作之一:
-
如果已安装 Statspack ,并且
PERFSTAT
账户与 Statspack 关联,请跳到步骤 4。 -
如果尚未安装 Statspack,并且
PERFSTAT
账户存在,请按如下方式删除账户:DROP USER PERFSTAT CASCADE;
否则,尝试添加 Statspack 选项会生成错误和
RDS-Event-0058
。
-
-
将 Statspack 选项添加到选项组。请参阅将选项添加到选项组。
Amazon RDS 会自动在数据库实例上安装 Statspack 脚本,然后设置
PERFSTAT
账户。 -
使用以下 SQL 语句重置密码,并将 pwd 替换为新密码:
ALTER USER PERFSTAT IDENTIFIED BY pwd ACCOUNT UNLOCK;
您可以使用
PERFSTAT
用户账户登录并运行 Statspack 脚本。 -
使用以下语句向
PERFSTAT
账户授予CREATE JOB
权限:GRANT CREATE JOB TO PERFSTAT;
-
确保填充
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 报告
-
在 SQL 客户端中,使用
PERFSTAT
账户登录到 Oracle 数据库。 -
使用以下任一方法创建快照:
-
手动创建 Statspack 快照。
-
创建一个在给定时间间隔后拍摄 Statspack 快照的作业。例如,以下作业每小时创建一个 Statspack 快照:
VARIABLE jn NUMBER; exec dbms_job.submit(:jn, 'statspack.snap;',SYSDATE,'TRUNC(SYSDATE+1/24,''HH24'')'); COMMIT;
-
-
使用以下查询查看快照:
SELECT SNAP_ID, SNAP_TIME FROM STATS$SNAPSHOT ORDER BY 1;
-
运行 Amazon RDS 过程
rdsadmin.rds_run_spreport
,用快照 ID 替换 begin_snap 和 end_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
。 -
监视输出是否存在错误。
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
-
(可选)
要检索报告,请调用跟踪文件过程,如 使用 Oracle 跟踪文件 中所述。
或者,从 RDS 控制台下载 Statspack 报告。转到数据库实例详细信息的日志部分,然后选择下载。下面的示例显示了
trace/ORCL_spreport_1_2.lst
如果在生成报告时发生错误,则数据库引擎使用与报告相同的命名约定,但扩展名为
.err
。例如,如果在使用 Statspack 快照 1 和 7 创建报告时出错,报告文件将命名为ORCL_spreport_1_7.err
。您可以使用与标准快照报告相同的方法下载错误报告。
删除 Statspack 快照
要删除一系列 Oracle Statspack 快照,请使用以下命令:
exec statspack.purge(begin snap, end snap);