Diagnóstico de problemas con instancias de bases de datos de RDS para Oracle - Amazon Relational Database Service

Diagnóstico de problemas con instancias de bases de datos de RDS para Oracle

Oracle Database incluye una infraestructura de diagnóstico de fallos que puede utilizar para investigar problemas de bases de datos. En la terminología de Oracle, un problema es un error crítico, como un error de código o un daño en los datos. Un incidente es la existencia de un problema. Si el mismo error ocurre tres veces, la infraestructura muestra tres incidentes de este problema. Para obtener más información, consulte Diagnóstico y resolución de problemas en la documentación de Oracle Database.

La utilidad Automatic Diagnostic Repository Command Interpreter (ADRCI) es una herramienta de línea de comandos de Oracle que se utiliza para administrar datos de diagnóstico. Por ejemplo, puede utilizar esta herramienta para investigar problemas y empaquetar datos de diagnóstico. Un paquete de incidentes incluye datos de diagnóstico de un incidente o de todos los incidentes que hacen referencia a un problema específico. Puede cargar un paquete de incidentes, que se implementa como un archivo.zip, en Oracle Support.

Para ofrecer una experiencia de servicio administrado, Amazon RDS no proporciona acceso mediante shell a ADRCI. Para realizar tareas de diagnóstico en la instancia de base de datos de RDS para Oracle, utilice el paquete rdsadmin.rdsadmin_adrci_util de Amazon RDS.

Mediante el uso de las funciones de rdsadmin_adrci_util, puede obtener un listado de los problemas e incidentes y empaquetarlos, así como mostrar archivos de seguimiento. Todas las funciones devuelven un ID de tarea. Este ID forma parte del nombre del archivo de registro que contiene el resultado de ADRCI, como en dbtask-task_id.log. El archivo de registro reside en el directorio BDUMP. Puede descargar el archivo de registro siguiendo el procedimiento descrito en Descarga de un archivo de registro de base de datos.

Parámetros comunes para procedimientos de diagnóstico

Para realizar tareas de diagnóstico, utilice funciones del paquete rdsadmin.rdsadmin_adrci_util de Amazon RDS. El paquete tiene los siguientes parámetros comunes.

Nombre del parámetro Tipo de datos Valores válidos Valor predeterminado Obligatorio Descripción

incident_id

número

Un ID de incidente válido o nulo

Null

No

Si el valor es nulo, la función muestra todos los incidentes. Si el valor no es nulo y representa un ID de incidente válido, la función muestra el incidente especificado.

problem_id

número

Un ID de problema válido o nulo

Null

No

Si el valor es nulo, la función muestra todos los problemas. Si el valor no es nulo y representa un ID de problema válido, la función muestra el problema especificado.

last

número

Un valor entero válido mayor que 0 o nulo

Null

No

Si el valor es nulo, la función muestra como máximo 50 elementos. Si el valor no es nulo, la función muestra el número especificado.

Descripción de incidentes

Para obtener un listado de los incidentes de diagnóstico para Oracle, utilice la función rdsadmin.rdsadmin_adrci_util.list_adrci_incidents de Amazon RDS. Puede obtener un listado de los incidentes en modo básico o detallado. De forma predeterminada, la función muestra los 50 incidentes más recientes.

Esta función utiliza los siguientes parámetros comunes:

  • incident_id

  • problem_id

  • last

Si especifica incident_id y problem_id, incident_id anula a problem_id. Para obtener más información, consulte Parámetros comunes para procedimientos de diagnóstico.

Esta función utiliza el siguiente parámetro adicional.

Nombre del parámetro Tipo de datos Valores válidos Valor predeterminado Obligatorio Descripción

detail

booleano

TRUE o FALSE

FALSE

No

Si TRUE, la función muestra los incidentes en modo detallado. Si FALSE, la función muestra los incidentes en modo básico.

Para enumerar todos los incidentes, consulte la función rdsadmin.rdsadmin_adrci_util.list_adrci_incidents sin argumentos. La consulta devuelve el ID de tarea.

SQL> SELECT rdsadmin.rdsadmin_adrci_util.list_adrci_incidents AS task_id FROM DUAL; TASK_ID ------------------ 1590786706158-3126

O llame a la función rdsadmin.rdsadmin_adrci_util.list_adrci_incidents sin ningún argumento y almacene la salida en una variable de cliente SQL. Puede utilizar la variable en otras instrucciones.

SQL> VAR task_id VARCHAR2(80); SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_incidents; PL/SQL procedure successfully completed.

Para leer el archivo de registro, llame al procedimiento rdsadmin.rds_file_util.read_text_file de Amazon RDS. Proporcione el identificador de la tarea como parte del nombre de archivo. El siguiente resultado muestra tres incidentes: 53523, 53522 y 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 enumerar un incidente concreto, especifique su ID mediante el parámetro incident_id. En el ejemplo siguiente, consulte el archivo de registro solo para el 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.

Descripción de problemas

Para enumerar los problemas de diagnóstico de Oracle, utilice la función rdsadmin.rdsadmin_adrci_util.list_adrci_problems de Amazon RDS.

De forma predeterminada, la función enumera los 50 problemas más recientes.

Esta función utiliza los parámetros comunes problem_id y last. Para obtener más información, consulte Parámetros comunes para procedimientos de diagnóstico.

Para obtener el ID de tarea de todos los problemas, llame a la función rdsadmin.rdsadmin_adrci_util.list_adrci_problems sin argumentos y almacene la salida en una variable de cliente SQL.

SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_problems; PL/SQL procedure successfully completed.

Para leer el archivo de registro, llame a la función rdsadmin.rds_file_util.read_text_file, proporcionando el ID de tarea como parte del nombre del archivo. En el siguiente resultado, el archivo de registro muestra tres problemas: 1, 2 y 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.

En el ejemplo siguiente, solo muestra el problema 3.

SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_problems(problem_id=>3); PL/SQL procedure successfully completed.

Para leer el archivo de registro del problema 3, llame rdsadmin.rds_file_util.read_text_file. Proporcione el identificador de la tarea como parte del nombre de archivo.

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.

Creación de paquetes de incidentes

Puede crear paquetes de incidentes utilizando la función rdsadmin.rdsadmin_adrci_util.create_adrci_package de Amazon RDS. El resultado es un archivo.zip que puede proporcionar a Oracle Support.

Esta función utiliza los siguientes parámetros comunes:

  • problem_id

  • incident_id

Asegúrese de especificar uno de los parámetros anteriores. Si especifica ambos, el parámetro incident_id anula el parámetro problem_id. Para obtener más información, consulte Parámetros comunes para procedimientos de diagnóstico.

Para crear un paquete para un incidente específico, llame a la función rdsadmin.rdsadmin_adrci_util.create_adrci_package de Amazon RDS con el parámetro incident_id. En el ejemplo siguiente se crea un paquete para el incidente 53523.

SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.create_adrci_package(incident_id=>53523); PL/SQL procedure successfully completed.

Para leer el archivo de registro, llame a rdsadmin.rds_file_util.read_text_file. Puede proporcionar el ID de tarea como parte del nombre de archivo. El resultado muestra que se ha generado el paquete de incidentes 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 empaquetar los datos de diagnóstico de un problema concreto, especifique su ID mediante el parámetro problem_id. En el ejemplo siguiente, solo se empaquetan datos del problema 3.

SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.create_adrci_package(problem_id=>3); PL/SQL procedure successfully completed.

Para leer la salida de la tarea, llame a rdsadmin.rds_file_util.read_text_file y proporcione el ID de la tarea como parte del nombre del archivo. El resultado muestra que se ha generado el paquete de incidentes 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.

También puede descargar el archivo de registro. Para obtener más información, consulte Descarga de un archivo de registro de base de datos.

Mostrar archivos de seguimiento

Puede utilizar la función de Amazon RDS rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile para enumerar los archivos de seguimiento en el directorio de seguimiento y todos los directorios de incidentes en la página de inicio del ADR actual. También puede mostrar el contenido de los archivos de seguimiento y de los archivos de seguimiento de incidentes.

Esta función utiliza el siguiente parámetro.

Nombre del parámetro Tipo de datos Valores válidos Valor predeterminado Obligatorio Descripción

filename

varchar2

Un nombre de archivo de seguimiento válido

Null

No

Si el valor es nulo, la función muestra todos los archivos de seguimiento. Si no es nulo, la función muestra el archivo especificado.

Para mostrar el archivo de seguimiento, llame a la función de Amazon RDS rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile.

SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile; PL/SQL procedure successfully completed.

Para enumerar los nombres de archivo de seguimiento, llame al procedimiento rdsadmin.rds_file_util.read_text_file de Amazon RDS, y proporcione el identificador de tarea como parte del nombre de archivo.

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.

En el ejemplo siguiente, se genera un resultado 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 leer el archivo de registro, llame a rdsadmin.rds_file_util.read_text_file. Proporcione el identificador de la tarea como parte del nombre de archivo. El resultado muestra las primeras 10 líneas 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.

También puede descargar el archivo de registro. Para obtener más información, consulte Descarga de un archivo de registro de base de datos.