

# Diagnóstico de problemas con instancias de bases de datos de RDS para Oracle
<a name="Appendix.Oracle.CommonDBATasks.Diagnostics"></a>

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](https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/diagnosing-and-resolving-problems.html#GUID-8DEB1BE0-8FB9-4FB2-A19A-17CF6F5791C3) 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](USER_LogAccess.Procedural.Downloading.md).

## Parámetros comunes para procedimientos de diagnóstico
<a name="Appendix.Oracle.CommonDBATasks.CommonDiagParameters"></a>

Para realizar tareas de diagnóstico, utilice funciones del paquete de Amazon RDS `rdsadmin.rdsadmin_adrci_util`. 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
<a name="Appendix.Oracle.CommonDBATasks.Incidents"></a>

Para obtener un listado de los incidentes de diagnóstico para Oracle, utilice la función de Amazon RDS `rdsadmin.rdsadmin_adrci_util.list_adrci_incidents`. 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](#Appendix.Oracle.CommonDBATasks.CommonDiagParameters).

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 de Amazon RDS `rdsadmin.rds_file_util.read_text_file`. 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
<a name="Appendix.Oracle.CommonDBATasks.Problems"></a>

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

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](#Appendix.Oracle.CommonDBATasks.CommonDiagParameters).

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
<a name="Appendix.Oracle.CommonDBATasks.IncPackages"></a>

Puede crear paquetes de incidentes utilizando la función de Amazon RDS `rdsadmin.rdsadmin_adrci_util.create_adrci_package`. 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](#Appendix.Oracle.CommonDBATasks.CommonDiagParameters).

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](USER_LogAccess.Procedural.Downloading.md).

## Mostrar archivos de seguimiento
<a name="Appendix.Oracle.CommonDBATasks.ShowTrace"></a>

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

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](USER_LogAccess.Procedural.Downloading.md).