如何在Oracle Standard Edition中使用STATSPACK代替AWR

哈Ha! 我向您介绍了文章“如何在Oracle标准版中使用statspack代替awr”的翻译

在Oracle Standard Edition中如何使用STATSPACK代替AWR。

报告问题


我当时在一个陌生的数据库中收集性能数据。 通过运行命令运行AWR报告后

@?/Rdbms/admin/awrrpt.sql 


出现错误:
 WARNING (-20023) ORA-20023: Missing start and end values for time model stat: parse time elapsed WARNING (-20023) ORA-20023: Missing start and end values for time model stat: DB CPU WARNING (-20016) ORA-20016: Missing value for SGASTAT: free memory ... 

是否有可能禁用诊断程序包?

让我们看看CONTROL_MANAGEMENT_PACK_ACCESS参数。

 SQL> show parameter control_management_pack_access NAME TYPE ------------------------------------ ---------------------- VALUE ------------------------------ control_management_pack_access string NONE 

我对NONE的价值有些谨慎。 由于Oracle Enterprise Edition包含诊断包许可证,而Standart Edition不包含诊断包许可证,因此我无权使用它。 让我们看看版本信息。

 .SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Release 11.1.0.6.0 - 64bit Production PL/SQL Release 11.1.0.6.0 - Production CORE 11.1.0.6.0 Production TNS for 64-bit Windows: Version 11.1.0.6.0 - Production NLSRTL Version 11.1.0.6.0 - Production 

如我们所见,“ Enterprise Edition”没有出现在控制台中。 这绝对是标准版。 好吧,至少我知道我无权使用它。

当我再次查看<ORACLE_HOME> / rdbms / admin目录时,我发现STATSPACK仍然存在,它是旧数据库的原始性能数据收集工具,在功能上与AWR非常相似。 最重要的是,我们可以无限制地使用STATSPACK替代Standart Edition中的AWR。

安装STATSPACK


必须至少采取两个步骤来创建带有计划任务的STATSPACK。

1)运行spcreate.sql脚本
我建议您将<ORACLE_HOME> / rdbms / admin目录作为当前工作目录,因为在运行时所有日志都将保留在该目录中。

运行脚本:

 SQL> @spcreate.sql; 

让我们看看该脚本中的内容:

 @@spcusr connect perfstat/&&perfstat_password @@spctab @@spcpkg 

它需要3个基本SQL脚本才能运行。
spcusr.sql

  • 它将创建一个名为PERFSTAT的用户,默认表空间为SYSAUX,临时表空间为TEMP。
  • 可以配置两个表空间,但是在运行此脚本之前,必须确保数据库中存在表空间。
  • 如果要稍后执行一些例程,则需要记住密码。

在spctab.sql表中,将创建71个STATSPACK表。

 STATS$DATABASE_INSTANCE STATS$LEVEL_DESCRIPTION STATS$SNAPSHOT STATS$DB_CACHE_ADVICE STATS$FILESTATXS STATS$TEMPSTATXS STATS$LATCH STATS$LATCH_CHILDREN STATS$LATCH_PARENT STATS$LATCH_MISSES_SUMMARY STATS$LIBRARYCACHE STATS$BUFFER_POOL_STATISTICS STATS$ROLLSTAT STATS$ROWCACHE_SUMMARY STATS$SGA STATS$SGASTAT STATS$SYSSTAT STATS$SESSTAT STATS$SYSTEM_EVENT STATS$SESSION_EVENT STATS$WAITSTAT STATS$ENQUEUE_STATISTICS STATS$SQL_SUMMARY STATS$SQLTEXT STATS$SQL_STATISTICS STATS$RESOURCE_LIMIT STATS$DLM_MISC STATS$CR_BLOCK_SERVER STATS$CURRENT_BLOCK_SERVER STATS$INSTANCE_CACHE_TRANSFER STATS$UNDOSTAT STATS$SQL_PLAN_USAGE STATS$SQL_PLAN STATS$SEG_STAT STATS$SEG_STAT_OBJ STATS$PGASTAT STATS$PARAMETER STATS$INSTANCE_RECOVERY STATS$STATSPACK_PARAMETER STATS$SHARED_POOL_ADVICE STATS$SQL_WORKAREA_HISTOGRAM STATS$PGA_TARGET_ADVICE STATS$JAVA_POOL_ADVICE STATS$THREAD STATS$FILE_HISTOGRAM STATS$EVENT_HISTOGRAM STATS$TIME_MODEL_STATNAME STATS$SYS_TIME_MODEL STATS$SESS_TIME_MODEL STATS$STREAMS_CAPTURE STATS$STREAMS_APPLY_SUM STATS$PROPAGATION_SENDER STATS$PROPAGATION_RECEIVER STATS$BUFFERED_QUEUES STATS$BUFFERED_SUBSCRIBERS STATS$RULE_SET STATS$OSSTATNAME STATS$OSSTAT STATS$PROCESS_ROLLUP STATS$PROCESS_MEMORY_ROLLUP STATS$SGA_TARGET_ADVICE STATS$STREAMS_POOL_ADVICE STATS$MUTEX_SLEEP STATS$DYNAMIC_REMASTER_STATS STATS$IOSTAT_FUNCTION_NAME STATS$IOSTAT_FUNCTION STATS$MEMORY_TARGET_ADVICE STATS$MEMORY_DYNAMIC_COMPS STATS$MEMORY_RESIZE_OPS STATS$INTERCONNECT_PINGS STATS$IDLE_EVENT 

spcpkg.sql

它将为PERFSTAT创建必要的STATSPACK存储过程。

2.运行spauto.sql脚本
该脚本将以指定的时间间隔(1小时)发送任务。

 SQL> @spauto.sql; 

他在其中介绍了这项工作:

 SQL> begin 2 select instance_number into :instno from v$instance; 3 dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno); 4 commit; 5 end; 6 / 

然后显示下一个运行时。

 SQL> select job, next_date, next_sec 2 from user_jobs 3 where job = :jobno; 

更多注意事项


为了获得更深入的统计信息,您需要将快照级别更改为7,而不是默认级别5。

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

此命令会将快照级别更改为7并同时拍照。

Source: https://habr.com/ru/post/zh-CN424235/


All Articles