Como usar o STATSPACK em vez do AWR no Oracle Standard Edition

Olá Habr! Apresento a você a tradução do artigo "Como usar o statspack em vez do awr na Oracle Standard Edition" .

Como usar o STATSPACK em vez do AWR no Oracle Standard Edition.

Informar problema


Eu estava coletando dados de desempenho em um banco de dados desconhecido. Depois de executar o relatório AWR, executando o comando

@?/Rdbms/admin/awrrpt.sql 


Ocorreu um erro:
 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 ... 

Existe uma chance de o pacote de diagnóstico estar desativado?

Vamos ver o parâmetro CONTROL_MANAGEMENT_PACK_ACCESS.

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

Fiquei um pouco cauteloso com o valor de NENHUM. Como o Oracle Enterprise Edition inclui uma licença de pacote de diagnóstico e a Standart Edition não, eu não tinha o direito de usá-la. Vamos ver as informações da versão.

 .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 

Como podemos ver, o “Enterprise Edition” não apareceu no console. Esta é definitivamente a edição padrão. Bem, pelo menos eu sei que não tenho o direito de usá-lo.

Quando olhei novamente para o diretório <ORACLE_HOME> / rdbms / admin, descobri que STATSPACK ainda está lá, que é a ferramenta original de coleta de dados de desempenho para bancos de dados mais antigos e é muito semelhante ao AWR em funções. O melhor de tudo é que podemos usar o STATSPACK como um substituto para o AWR na Standart Edition sem restrições.

Instalar STATSPACK


Pelo menos duas etapas devem ser executadas para criar um STATSPACK com uma tarefa agendada.

1) Execute o script spcreate.sql
Sugiro que você vá para o diretório <ORACLE_HOME> / rdbms / admin como seu diretório de trabalho atual, porque todos os logs permanecerão nesse diretório em tempo de execução.

Execute o script:

 SQL> @spcreate.sql; 

Vamos ver o que temos neste script:

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

Requer 3 scripts SQL básicos para executar.
spcusr.sql

  • Ele criará um usuário chamado PERFSTAT, o espaço de tabela padrão será SYSAUX e o espaço de tabela temporário será TEMP.
  • Os dois espaços de tabela podem ser configurados, mas antes de executar este script, você deve garantir que os espaços de tabela existam no seu banco de dados.
  • Você precisa lembrar a senha se desejar executar algumas rotinas posteriormente.

Na tabela spctab.sql, serão criadas 71 tabelas 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

Ele criará os procedimentos armazenados STATSPACK necessários para PERFSTAT.

2. Execute o script spauto.sql
Este script enviará a tarefa no intervalo especificado (1 hora).

 SQL> @spauto.sql; 

Em que ele apresenta este trabalho:

 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 / 

E então mostre o próximo tempo de execução.

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

Mais considerações


Para estatísticas mais detalhadas, você precisa alterar o nível do instantâneo para 7 em vez do nível padrão 5.

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

Este comando altera o nível de snap para 7 e tira uma foto ao mesmo tempo.

Source: https://habr.com/ru/post/pt424235/


All Articles