Diagnosticar problemas com instâncias de banco de dados do RDS para Oracle
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
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-
. 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.task_id
.log
Parâmetros comuns para procedimentos de diagnóstico
Para executar tarefas de diagnóstico, use funções no pacote rdsadmin.rdsadmin_adrci_util
do Amazon RDS. O pacote tem os seguintes parâmetros comuns.
Nome do parâmetro | Tipo de dados | Valores válidos | Padrão | Obrigatório | Descrição |
---|---|---|---|---|---|
|
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. |
|
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. |
|
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
Para listar incidentes de diagnóstico para o Oracle, use a função rdsadmin.rdsadmin_adrci_util.list_adrci_incidents
do Amazon RDS. 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.
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 |
---|---|---|---|---|---|
|
booliano |
TRUE ou FALSE |
|
Não |
Se for |
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 rdsadmin.rds_file_util.read_text_file
do Amazon RDS. 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
Para listar problemas de diagnóstico para o Oracle, use a função rdsadmin.rdsadmin_adrci_util.list_adrci_problems
do Amazon RDS.
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.
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
É possível criar pacotes de incidente usando a função do Amazon RDS. 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.
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 ter mais informações, consulte Como baixar um arquivo de log de banco de dados.
Mostrar arquivos de rastreamento
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 |
---|---|---|---|---|---|
|
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_ORCL.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 ter mais informações, consulte Como baixar um arquivo de log de banco de dados.