

# Diagnosticar problemas com instâncias de banco de dados do RDS para Oracle
<a name="Appendix.Oracle.CommonDBATasks.Diagnostics"></a>

O Oracle Database inclui uma infraestrutura de diagnóstico de falhas que pode ser usada para investigar problemas do banco de dados. Na terminologia do Oracle, um *problema* é um erro crítico, como um erro de código ou uma corrupção de dados. Um *incidente* é a ocorrência de um problema. Se o mesmo erro ocorrer três vezes, a infraestrutura mostrará três incidentes desse problema. Para ter mais informações, consulte [Diagnosing and resolving problems](https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/diagnosing-and-resolving-problems.html#GUID-8DEB1BE0-8FB9-4FB2-A19A-17CF6F5791C3) (Diagnosticar e resolver problemas) na documentação do Oracle Database.

O utilitário ADRCI (Automatic Diagnostic Repository Command Interpreter) é uma ferramenta da linha de comando Oracle usada para gerenciar dados de diagnóstico. Por exemplo, é possível usar essa ferramenta para investigar problemas e empacotar dados de diagnóstico. Um *pacote de incidente* inclui dados de diagnóstico de um incidente ou de todos os incidentes que fazem referência a um problema específico. Você pode fazer upload de um pacote de incidente, que é implementado como um arquivo .zip, para o suporte do Oracle.

Para oferecer uma experiência de serviço gerenciada, o Amazon RDS não fornece acesso ao shell para ADRCI. Use o pacote `rdsadmin.rdsadmin_adrci_util` do Amazon RDS para realizar tarefas de diagnóstico da instância de banco de dados do RDS para Oracle.

Usando as funções em `rdsadmin_adrci_util`, é possível listar e empacotar problemas e incidentes, além de mostrar arquivos de rastreamento. Todas as funções retornam um ID de tarefa. Esse ID faz parte do nome do arquivo de log que contém a saída de ADRCI, como em `dbtask-task_id.log`. O arquivo de log reside no diretório BDUMP. É possível baixar o arquivo de log seguindo o procedimento descrito em [Como baixar um arquivo de log de banco de dados](USER_LogAccess.Procedural.Downloading.md).

## Parâmetros comuns para procedimentos de diagnóstico
<a name="Appendix.Oracle.CommonDBATasks.CommonDiagParameters"></a>

Para executar tarefas de diagnóstico, use funções no pacote do Amazon RDS `rdsadmin.rdsadmin_adrci_util`. O pacote tem os seguintes parâmetros comuns.


****  

| Nome do parâmetro | Tipo de dados | Valores válidos | Padrão | Obrigatório | Descrição | 
| --- | --- | --- | --- | --- | --- | 
|  `incident_id`  |  número  |  Um ID de incidente válido ou nulo   |  Nulo  |  Não  |  Se o valor for nulo, a função mostrará todos os incidentes. Se o valor não for nulo e representar um ID de incidente válido, a função mostrará o incidente especificado.   | 
|  `problem_id`  |  número  |  Um ID de problema válido ou nulo  |  Nulo  |  Não  |  Se o valor for nulo, a função mostrará todos os problemas. Se o valor não for nulo e representar um ID de problema válido, a função mostrará o problema especificado.  | 
|  `last`  |  número  |  Um inteiro válido maior que 0 ou nulo  |  Nulo  |  Não  |  Se o valor for nulo, a função exibirá no máximo 50 itens. Se o valor não for nulo, a função exibirá o número especificado.  | 

## Listar incidentes
<a name="Appendix.Oracle.CommonDBATasks.Incidents"></a>

Para listar incidentes de diagnóstico para o Oracle, use a função do Amazon RDS `rdsadmin.rdsadmin_adrci_util.list_adrci_incidents`. Você pode listar incidentes no modo básico ou detalhado. Por padrão, a função lista os 50 incidentes mais recentes.

Essa função usa os seguintes parâmetros comuns:
+  `incident_id`
+  `problem_id`
+  `last`

Se você especificar `incident_id` e `problem_id`, `incident_id` substituirá `problem_id`. Para ter mais informações, consulte [Parâmetros comuns para procedimentos de diagnóstico](#Appendix.Oracle.CommonDBATasks.CommonDiagParameters).

Essa função usa o parâmetro adicional a seguir.


****  

| Nome do parâmetro | Tipo de dados | Valores válidos | Padrão | Obrigatório | Descrição | 
| --- | --- | --- | --- | --- | --- | 
|  `detail`  |  booliano  | TRUE ou FALSE |  `FALSE`  |  Não  |  Se for `TRUE`, a função listará incidentes no modo detalhado. Se for `FALSE`, a função listará incidentes no modo básico.  | 

Para listar todos os incidentes, consulte a função `rdsadmin.rdsadmin_adrci_util.list_adrci_incidents` sem argumentos. A consulta retorna o ID da tarefa.

```
SQL> SELECT rdsadmin.rdsadmin_adrci_util.list_adrci_incidents AS task_id FROM DUAL;

TASK_ID
------------------
1590786706158-3126
```

Ou chame a função `rdsadmin.rdsadmin_adrci_util.list_adrci_incidents` sem argumentos e armazene a saída em uma variável de cliente SQL. Você pode usar a variável em outras instruções.

```
SQL> VAR task_id VARCHAR2(80);
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_incidents;

PL/SQL procedure successfully completed.
```

Para ler o arquivo de log, chame o procedimento do Amazon RDS `rdsadmin.rds_file_util.read_text_file`. Forneça o ID da tarefa como parte do nome do arquivo. A saída a seguir mostra três incidentes: 53523, 53522 e 53521.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
-------------------------------------------------------------------------------------------------------------------------
2020-05-29 21:11:46.193 UTC [INFO ] Listing ADRCI incidents.
2020-05-29 21:11:46.256 UTC [INFO ]
ADR Home = /rdsdbdata/log/diag/rdbms/orcl_a/ORCL:
*************************************************************************
INCIDENT_ID PROBLEM_KEY                                                 CREATE_TIME
----------- ----------------------------------------------------------- ----------------------------------------
53523       ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_003 2020-05-29 20:15:20.928000 +00:00
53522       ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_002 2020-05-29 20:15:15.247000 +00:00
53521       ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_001 2020-05-29 20:15:06.047000 +00:00
3 rows fetched


2020-05-29 21:11:46.256 UTC [INFO ] The ADRCI incidents were successfully listed.
2020-05-29 21:11:46.256 UTC [INFO ] The task finished successfully.

14 rows selected.
```

Para listar determinado incidente, especifique seu ID usando o parâmetro `incident_id`. No exemplo a seguir, o arquivo de log é consultado somente para o incidente 53523.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_incidents(incident_id=>53523);

PL/SQL procedure successfully completed.

SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
------------------------------------------------------------------------------------------------------------------
2020-05-29 21:15:25.358 UTC [INFO ] Listing ADRCI incidents.
2020-05-29 21:15:25.426 UTC [INFO ]
ADR Home = /rdsdbdata/log/diag/rdbms/orcl_a/ORCL:
*************************************************************************
INCIDENT_ID          PROBLEM_KEY                                                 CREATE_TIME
-------------------- ----------------------------------------------------------- ---------------------------------
53523                ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_003 2020-05-29 20:15:20.928000 +00:00
1 rows fetched


2020-05-29 21:15:25.427 UTC [INFO ] The ADRCI incidents were successfully listed.
2020-05-29 21:15:25.427 UTC [INFO ] The task finished successfully.

12 rows selected.
```

## Listar problemas
<a name="Appendix.Oracle.CommonDBATasks.Problems"></a>

Para listar problemas de diagnóstico para o Oracle, use a função do Amazon RDS `rdsadmin.rdsadmin_adrci_util.list_adrci_problems`.

Por padrão, a função lista os 50 problemas mais recentes. 

Essa função usa os parâmetros comuns `problem_id` e `last`. Para ter mais informações, consulte [Parâmetros comuns para procedimentos de diagnóstico](#Appendix.Oracle.CommonDBATasks.CommonDiagParameters).

Para obter o ID da tarefa para todos os problemas, chame a função `rdsadmin.rdsadmin_adrci_util.list_adrci_problems` sem argumentos e armazene a saída em uma variável de cliente SQL.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_problems;

PL/SQL procedure successfully completed.
```

Para ler o arquivo de log, chame a função `rdsadmin.rds_file_util.read_text_file`, fornecendo o ID da tarefa como parte do nome do arquivo. Na saída a seguir, o arquivo de log mostra três problemas: 1, 2 e 3.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
----------------------------------------------------------------------------------------------------------------------
2020-05-29 21:18:50.764 UTC [INFO ] Listing ADRCI problems.
2020-05-29 21:18:50.829 UTC [INFO ]
ADR Home = /rdsdbdata/log/diag/rdbms/orcl_a/ORCL:
*************************************************************************
PROBLEM_ID   PROBLEM_KEY                                                 LAST_INCIDENT        LASTINC_TIME
---------- ----------------------------------------------------------- ------------- ---------------------------------
2          ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_003 53523         2020-05-29 20:15:20.928000 +00:00
3          ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_002 53522         2020-05-29 20:15:15.247000 +00:00
1          ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_001 53521         2020-05-29 20:15:06.047000 +00:00
3 rows fetched


2020-05-29 21:18:50.829 UTC [INFO ] The ADRCI problems were successfully listed.
2020-05-29 21:18:50.829 UTC [INFO ] The task finished successfully.

14 rows selected.
```

No exemplo a seguir, somente o problema 3 é listado.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_problems(problem_id=>3);

PL/SQL procedure successfully completed.
```

Para ler o arquivo de log do problema 3, chame `rdsadmin.rds_file_util.read_text_file`. Forneça o ID da tarefa como parte do nome do arquivo.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
-------------------------------------------------------------------------
2020-05-29 21:19:42.533 UTC [INFO ] Listing ADRCI problems.
2020-05-29 21:19:42.599 UTC [INFO ]
ADR Home = /rdsdbdata/log/diag/rdbms/orcl_a/ORCL:
*************************************************************************
PROBLEM_ID PROBLEM_KEY                                                 LAST_INCIDENT LASTINC_TIME
---------- ----------------------------------------------------------- ------------- ---------------------------------
3          ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_002 53522         2020-05-29 20:15:15.247000 +00:00
1 rows fetched


2020-05-29 21:19:42.599 UTC [INFO ] The ADRCI problems were successfully listed.
2020-05-29 21:19:42.599 UTC [INFO ] The task finished successfully.

12 rows selected.
```

## Criar pacotes de incidente
<a name="Appendix.Oracle.CommonDBATasks.IncPackages"></a>

É possível criar pacotes de incidente usando a função do Amazon RDS `rdsadmin.rdsadmin_adrci_util.create_adrci_package`. A saída é um arquivo .zip que você pode fornecer ao suporte do Oracle.

Essa função usa os seguintes parâmetros comuns:
+ `problem_id`
+ `incident_id`

Especifique um dos parâmetros anteriores. Se você especificar ambos os parâmetros, `incident_id` substituirá `problem_id`. Para ter mais informações, consulte [Parâmetros comuns para procedimentos de diagnóstico](#Appendix.Oracle.CommonDBATasks.CommonDiagParameters).

Para criar um pacote para um incidente específico, chame a função `rdsadmin.rdsadmin_adrci_util.create_adrci_package` do Amazon RDS com o parâmetro `incident_id`. O exemplo a seguir cria um pacote para o incidente 53523.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.create_adrci_package(incident_id=>53523);

PL/SQL procedure successfully completed.
```

Para ler o arquivo de log, chame `rdsadmin.rds_file_util.read_text_file`. Você pode fornecer o ID da tarefa como parte do nome do arquivo. A saída mostra que você gerou o pacote de incidente `ORA700EVE_20200529212043_COM_1.zip`.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
--------------------------------------------------------------------------------------------------------------------------------------
2020-05-29 21:20:43.031 UTC [INFO ] The ADRCI package is being created.
2020-05-29 21:20:47.641 UTC [INFO ] Generated package 1 in file /rdsdbdata/log/trace/ORA700EVE_20200529212043_COM_1.zip, mode complete
2020-05-29 21:20:47.642 UTC [INFO ] The ADRCI package was successfully created.
2020-05-29 21:20:47.642 UTC [INFO ] The task finished successfully.
```

Para empacotar dados de diagnóstico de determinado problema, especifique seu ID usando o parâmetro `problem_id`. No exemplo a seguir, os dados são empacotados apenas para o problema 3.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.create_adrci_package(problem_id=>3);

PL/SQL procedure successfully completed.
```

Para ler a saída da tarefa, chame `rdsadmin.rds_file_util.read_text_file`, fornecendo o ID da tarefa como parte do nome do arquivo. A saída mostra que você gerou o pacote de incidente `ORA700EVE_20200529212111_COM_1.zip`.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
------------------------------------------------------------------------------------------------------------------------------------------------------------
2020-05-29 21:21:11.050 UTC [INFO ] The ADRCI package is being created.
2020-05-29 21:21:15.646 UTC [INFO ] Generated package 2 in file /rdsdbdata/log/trace/ORA700EVE_20200529212111_COM_1.zip, mode complete
2020-05-29 21:21:15.646 UTC [INFO ] The ADRCI package was successfully created.
2020-05-29 21:21:15.646 UTC [INFO ] The task finished successfully.
```

Também é possível baixar o arquivo de log. Para obter mais informações, consulte [Como baixar um arquivo de log de banco de dados](USER_LogAccess.Procedural.Downloading.md).

## Mostrar arquivos de rastreamento
<a name="Appendix.Oracle.CommonDBATasks.ShowTrace"></a>

Você pode usar a função do Amazon RDS `rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile` para listar arquivos de rastreamento no diretório de rastreamento e todos os diretórios de incidentes na página inicial atual do ADR. Você também pode mostrar o conteúdo dos arquivos de rastreamento e dos arquivos de rastreamento de incidentes.

Essa função usa o parâmetro a seguir.


****  

| Nome do parâmetro | Tipo de dados | Valores válidos | Padrão | Obrigatório | Descrição | 
| --- | --- | --- | --- | --- | --- | 
|  `filename`  |  varchar2  | Um nome de arquivo de rastreamento válido |  Nulo  |  Não  |  Se o valor for nulo, a função mostrará todos os arquivos de rastreamento. Se não for nulo, a função mostrará o arquivo especificado.  | 

Para mostrar o arquivo de rastreamento, chame a função `rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile` do Amazon RDS.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile;

PL/SQL procedure successfully completed.
```

Para listar os nomes dos arquivos de rastreamento, chame o procedimento `rdsadmin.rds_file_util.read_text_file` do Amazon RDS, fornecendo o ID da tarefa como parte do nome do arquivo.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log')) WHERE TEXT LIKE '%/alert_%';

TEXT
---------------------------------------------------------------
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-28
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-27
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-26
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-25
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-24
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-23
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-22
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-21
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log

9 rows selected.
```

No exemplo a seguir, é gerada uma saída para `alert_ORCL.log`.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile('diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log');

PL/SQL procedure successfully completed.
```

Para ler o arquivo de log, chame `rdsadmin.rds_file_util.read_text_file`. Forneça o ID da tarefa como parte do nome do arquivo. A saída mostra as primeiras 10 linhas de alert\$1ORCL.log.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log')) WHERE ROWNUM <= 10;

TEXT
-----------------------------------------------------------------------------------------
2020-05-29 21:24:02.083 UTC [INFO ] The trace files are being displayed.
2020-05-29 21:24:02.128 UTC [INFO ] Thu May 28 23:59:10 2020
Thread 1 advanced to log sequence 2048 (LGWR switch)
  Current log# 3 seq# 2048 mem# 0: /rdsdbdata/db/ORCL_A/onlinelog/o1_mf_3_hbl2p8xs_.log
Thu May 28 23:59:10 2020
Archived Log entry 2037 added for thread 1 sequence 2047 ID 0x5d62ce43 dest 1:
Fri May 29 00:04:10 2020
Thread 1 advanced to log sequence 2049 (LGWR switch)
  Current log# 4 seq# 2049 mem# 0: /rdsdbdata/db/ORCL_A/onlinelog/o1_mf_4_hbl2qgmh_.log
Fri May 29 00:04:10 2020

10 rows selected.
```

Também é possível baixar o arquivo de log. Para obter mais informações, consulte [Como baixar um arquivo de log de banco de dados](USER_LogAccess.Procedural.Downloading.md).