No último post eu mostrei como instalar e configurar o STATSPACK, neste post mostrarei como configurar uma coleta automática de dados para o STATSPACK.
Statspack não é um processo automático. Ele requer configuração manual, um DBA precisa configurar um scheduler para Statspack Collection e Statspack purge.
Podemos automatizar a tomada de snapshots do STATSPACK executando DBMS_JOB ou programando-o através do crontab. No exemplo que usaremos mostraremos a configuração do scheduler para o STATSPACK via DBMS_JOB.
Cabe ao DBA, descobrir quantas vezes precisa estar executando o STATSPACK. Como os dados devem ser coletados e escritos em algum lugar, certifique-se de que você não está coletando dados com muita freqüência, a coleta de dados em excesso pode tornar o servidor de banco de dados mais lento.
Abaixo mostraremos como configurar uma coleta automática para o STATSPACK.
Depois do STATSPACK instalado e funcionando, podemos agendar a coleta automática de dados. O script spauto.sql pode ser usado para agendar coletas de snapshots do sistema a cada hora.
SQL> @?/rdbms/admin/spauto.sql
OBS: De acordo com a necessidade do ambiente é possível alterar o intervalo de execução deste job.
Para uma coleta manual usamos o comando abaixo, conectados com o usuário perfstat.
SQL> EXEC STATSPACK.snap
PL/SQL procedure successfully completed.
SQL>
1 – Gerando Relatórios
Após mais de um snapshot coletado, estarei gerando um relatório com a análise do ambiente. Assim como no AWR, para gerar o relatório do STATSPACK, devemos selecionar um snapshot inicial e um snapshot final e posteriormente definimos o nome do arquivo a ser gerado, que pode ser precedido pelo local de destino.
Segue abaixo a sintaxe da execução do relatório de coleta STATSPACK.
SQL> @?/rdbms/admin/spreport.sql
Segue abaixo um modelo do relatório STATSPACK (como o relatório é extenso somente coloquei a parte inicial).
STATSPACK report for
Database DB Id Instance Inst Num Startup Time Release RAC
~~~~~~~~ ———– ———— ——– ————— ———– —
196335337 orcl 1 20-Apr-17 12:52 11.2.0.1.0 NO
Host Name Platform CPUs Cores Sockets Memory (G)
~~~~ —————- ———————- —– —– ——- ———
localhost.locald Linux x86 64-bit 2 2 1 2.0
Snapshot Snap Id Snap Time Sessions Curs/Sess Comment
~~~~~~~~ ———- —————— ——– ——— ———–
Begin Snap: 3 20-Apr-17 16:00:03 40 5.1
End Snap: 4 20-Apr-17 17:00:05 40 5.1
Elapsed: 60.03 (mins) Av Act Sess: 0.4
DB time: 25.94 (mins) DB CPU: 13.92 (mins)
Cache Sizes Begin End
~~~~~~~~~~~ ———- ———-
Buffer Cache: 188M Std Block Size: 8K
Shared Pool: 288M Log Buffer: 2,160K
Load Profile Per Second Per Transaction Per Exec Per Call
~~~~~~~~~~~~ —————— —————– ———- ——
DB time(s): 0.4 0.0 0.01 0.06
DB CPU(s): 0.2 0.0 0.00 0.03
Redo size: 20,766.2 2,092.1
Logical reads: 548.5 55.3
Block changes: 138.3 13.9
Physical reads: 22.9 2.3
Physical writes: 16.5 1.7
User calls: 7.0 0.7
Parses: 9.2 0.9
Hard parses: 0.0 0.0
W/A MB processed: 1.8 0.2
Logons: 0.1 0.0
Executes: 62.6 6.3
Rollbacks: 0.0 0.0
Transactions: 9.9
2 – Purgar/remover dados desnecessários
É possível limpar dados desnecessários do esquema PERFSTAT usando sppurge.sql. Este script exclui snapshots que estão entre o intervalo inicial e final do Snapshot Id especificado. Segue abaixo a sintaxe de execução:
@?/rdbms/admin/sppurge.sql
OBS: O script acima executa uma remoção manual dos snapshots coletados, esse procedimento pode ser feito de forma automática pelo DBA.
3 – Desinstalando o STATSPACK
Para remover o statspack, basta executar o comando spdrop.sql.
@?/rdbms/admin/spdrop.sql
Referências: