Oradata

Oracle Statspack – Parte I

Oracle Statspack – Parte I

O Statspack é uma package do Oracle database que armazena snapshots dos dados de performance da instância de banco de dados seja ela single ou RAC. Você pode usar o Statspack como uma alternativa ao relatório AWR (que é uma option do Oracle e precisa ser licenciado à parte no Oracle Diagnostic Pack).

Diferentemente do AWR que já vem instalado e funcional, o Statspack precisa ser configurado manualmente para que funcione de forma correta. Esta etapa é muito simples, basta executar um script sql que fica na $ORACLE_HOME/rdbms/admin. Nesta pasta existem vários scripts sql que são usados na administração da instância, destes scripts todos aqueles que começarem com spXXXX.sql são inerentes ao Statspack.

Na tabela abaixo você pode ver as funções de alguns destes scripts:

Ação

Comando no SQL*Plus

Executar com o usuário

Instalar o Statspack

SQL>@spcreate

SYS

Cria um Job para coleta das informações (snapshot) para um intervalo de 60 minutos

SQL>@spauto

Role de DBA

Gerar relatório do Statspack

SQL>@spreport

Role de DBA

Eliminar snapshots antigos.

SQL>@sppurge

Role de DBA

Trunca as tabelas dos snapshots

SQL>@sptrunc

PERSTAT

Desinstalar o Statspack

SQL>@spdrop

Role de DBA

Para configurar o Statspack você pode seguir o procedimento abaixo:

1 – Crie uma tablespace chamada PERFSTAT:

SQL> create tablespace PERFSTAT datafile 'XXXXX' size 10m autoextend on next 100m maxsize 10g;

2 – Se estiver usando Multitenant Database execute o script abaixo, caso contrário vá direto para o passo 3.

SQL> alter session set "_oracle_script"=true;

3 – Execute o script de criação dos objetos do Statspack:

SQL> @?/rdbms/admin/spcreate.sql

4 – Colete as estatísticas do usuário PERFSTAT:

SQL> exec dbms_stats.gather_schema_stats('PERFSTAT');

5 – Agora você já pode logar no banco de dados com o usuário PERFSTAT e executar algumas tarefas do Statspack. Como por exemplo gerar um snapshot inicial:

$ sqlplus perfstat/oracle

SQL> exec statspack.snap;

6 – Também já é possível deixar agendado o processo de coleta automática dos snapshots:

SQL> @?/rdbms/admin/spauto.sql

7 – Confira se o agendamento está OK, na DBA_JOBS:

SQL> alter session set nls_date_format='dd/mm/yyyy hh24:mi:ss';

SQL> select job, what, LAST_DATE, NEXT_DATE, TOTAL_TIME, BROKEN, FAILURES from dba_jobs where SCHEMA_USER='PERFSTAT';

8 – Para gerar o seu primeiro report, gere um novo snapshot e execute o relatório:

SQL> exec statspack.snap;

SQL>  select name, snap_id, to_char(snap_time, 'DD/MM/YYYY HH24:MI:SS') "Snapshot Time" from stats$snapshot,v$database;

SQL> @?/rdbms/admin/spreport.sql

Bom, por hoje é só, em breve escrevei a segunda parte deste artigo dando algumas dicas de como interpretar as informações do relatório.

Forte abraço e até a próxima!

Douglas Paiva de Sousa

2 thoughts on “Oracle Statspack – Parte I

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *