Oracle Statspack - Amazon Relational Database Service

Oracle Statspack

A opção Oracle Statspack instala e habilita o recurso de estatísticas de performance Oracle Statspack. O Oracle Statspack é uma coleção de scripts SQL, PL/SQL e SQL*Plus que coletam, armazenam e exibem dados de performance. Para obter informações sobre como usar o Oracle Statspack, consulte Oracle Statspack na documentação da Oracle.

nota

O Oracle Statspack não tem mais suporte pela Oracle e foi substituído pelo mais avançado AWR (Automatic Workload Repository). O AWR está disponível apenas para clientes do Oracle Enterprise Edition que compraram o Diagnostics Pack. Você pode usar o Oracle Statspack com qualquer mecanismo de banco de dados Oracle no Amazon RDS. Você não pode executar o Oracle Statspack em réplicas de leitura do Amazon RDS.

Configurar o Oracle Statspack

Para executar scripts do Statspack, é necessário adicionar a opção Statspack.

Como configurar o Oracle Statspack
  1. Em um cliente SQL, faça login no banco de dados Oracle com uma conta administrativa.

  2. Execute uma das seguintes ações, dependendo se o Statspack está instalado:

    • Se o Statspack estiver instalado e a conta PERFSTAT estiver associada ao Statspack, vá para a Etapa 4.

    • Se o Statspack não estiver instalado e a conta PERFSTAT existir, descarte a conta da seguinte maneira:

      DROP USER PERFSTAT CASCADE;

      Caso contrário, tentar adicionar a opção Statspack gerará um erro e RDS-Event-0058.

  3. Adicione a opção Statspack a um grupo de opções. Consulte Adicionar uma opção a um grupo de opções.

    O Amazon RDS instala automaticamente os scripts do Statspack na instância de banco de dados e configura a conta PERFSTAT.

  4. Redefina a senha usando a seguinte instrução SQL, substituindo pwd por sua nova senha:

    ALTER USER PERFSTAT IDENTIFIED BY pwd ACCOUNT UNLOCK;

    Você pode fazer login usando a conta do usuário PERFSTAT e executar os scripts do Statspack.

  5. Conceda o privilégio CREATE JOB à conta PERFSTAT usando a seguinte instrução:

    GRANT CREATE JOB TO PERFSTAT;
  6. Verifique se os eventos de espera ociosos na tabela PERFSTAT.STATS$IDLE_EVENT estão preenchidos.

    Devido ao erro 28523746 do Oracle, os eventos de espera ociosos em PERFSTAT.STATS$IDLE_EVENT podem não estar preenchidos. Para garantir que todos os eventos ociosos estejam disponíveis, execute a seguinte instrução:

    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;

Gerar relatórios do Statspack

Um relatório do Statspack compara dois snapshots.

Como gerar relatórios do Statspack
  1. Em um cliente SQL, faça login no banco de dados Oracle com a conta PERFSTAT.

  2. Crie um snapshot usando uma das seguintes técnicas:

    • Crie um snapshot do Statspack manualmente.

    • Crie um trabalho que faça um snapshot do Statspack após determinado intervalo de tempo. Por exemplo, o seguinte trabalho cria um snapshot do Statspack a cada hora:

      VARIABLE jn NUMBER; exec dbms_job.submit(:jn, 'statspack.snap;',SYSDATE,'TRUNC(SYSDATE+1/24,''HH24'')'); COMMIT;
  3. Visualize os snapshots usando a seguinte consulta:

    SELECT SNAP_ID, SNAP_TIME FROM STATS$SNAPSHOT ORDER BY 1;
  4. Execute o procedimento rdsadmin.rds_run_spreport do Amazon RDS, substituindo begin_snap e end_snap pelos IDs do snapshot:

    exec rdsadmin.rds_run_spreport(begin_snap,end_snap);

    Por exemplo, o seguinte comando cria um relatório baseado no intervalo entre os snapshots 1 e 2 do Statspack:

    exec rdsadmin.rds_run_spreport(1,2);

    O nome de arquivo do relatório do Statspack inclui o número dos dois snapshots. Por exemplo, um arquivo de relatório criado usando os snapshots 1 e 2 do Statspack se chamaria ORCL_spreport_1_2.lst.

  5. Verifique se há erros na saída.

    O Oracle Statspack realiza verificações antes de executar o relatório. Portanto, você também pode ver mensagens de erro na saída do comando. Por exemplo, você pode tentar gerar um relatório com base em um intervalo inválido, em que o valor inicial do snapshot do Statspack é maior do que o valor final. Nesse caso, a saída mostra a mensagem de erro, mas o mecanismo de banco de dados não gera um arquivo de erro.

    exec rdsadmin.rds_run_spreport(2,1); * ERROR at line 1: ORA-20000: Invalid snapshot IDs. Find valid ones in perfstat.stats$snapshot.

    Se você usar um número inválido para um snapshot do Statspack, a saída mostrará um erro. Por exemplo, se você tentar gerar um relatório para os snapshots 1 e 50, mas o snapshot 50 não existir, a saída mostrará um erro.

    exec rdsadmin.rds_run_spreport(1,50); * ERROR at line 1: ORA-20000: Could not find both snapshot IDs
  6. (Optional)

    Para recuperar o relatório, chame os procedimentos de arquivo de rastreamento, conforme explicado em Trabalhar com arquivos de rastreamento da Oracle.

    Como alternativa, baixe o relatório do Statspack pelo console do RDS. Acesse a seção Log dos detalhes da instância de banco de dados e selecione Baixar. O exemplo a seguir mostra trace/ORCL_spreport_1_2.lst.

    Mostra uma lista de arquivos de log do Oracle no console do RDS. O seguinte arquivo de rastreamento é circulado: trace/ORCL_spreport_1_2.lst.

    Se ocorrer um erro ao gerar um relatório, o mecanismo de banco de dados usará as mesmas convenções de nomenclatura de um relatório, mas com uma extensão de .err. Por exemplo, se ocorresse um erro durante a criação de um relatório usando os snapshots 1 e 7 do Statspack, o arquivo de relatório se chamaria ORCL_spreport_1_7.err. É possível baixar o relatório de erros usando as mesmas técnicas de um relatório de snapshot padrão.

Remover snapshots do Statspack

Para remover vários snapshots do Oracle Statspack, use o seguinte comando:

exec statspack.purge(begin snap, end snap);