

# Oracle Statspack
<a name="Appendix.Oracle.Options.Statspack"></a>

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\$1Plus que coletam, armazenam e exibem dados de performance. Para obter informações sobre como usar o Oracle Statspack, consulte [Oracle Statspack](http://docs.oracle.com/cd/E13160_01/wli/docs10gr3/dbtuning/statsApdx.html) 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
<a name="Appendix.Oracle.Options.Statspack.setting-up"></a>

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.

1. 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`.

1. Adicione a opção Statspack a um grupo de opções. Consulte [Adicionar uma opção a um grupo de opções](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption).

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

1. 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.

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

   ```
   GRANT CREATE JOB TO PERFSTAT;
   ```

1. 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
<a name="Appendix.Oracle.Options.Statspack.generating-reports"></a>

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`.

1. 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;
     ```

1. Visualize os snapshots usando a seguinte consulta:

   ```
   SELECT SNAP_ID, SNAP_TIME FROM STATS$SNAPSHOT ORDER BY 1;
   ```

1. Execute o procedimento `rdsadmin.rds_run_spreport` do Amazon RDS, substituindo *begin\$1snap* e *end\$1snap* 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`.

1. 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
   ```

1. (Optional) 

   Para recuperar o relatório, chame os procedimentos de arquivo de rastreamento, conforme explicado em [Trabalhar com arquivos de rastreamento da Oracle](USER_LogAccess.Concepts.Oracle.md#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles). 

   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.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/statspack1.png)

   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
<a name="Appendix.Oracle.Options.Statspack.removing-files"></a>

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

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