

# Administración de planes SQL en tiempo real en RDS para Oracle
<a name="Oracle.RealTimeSPM"></a>

A partir de Oracle Database 26ai (26.0.0.0), Amazon RDS para Oracle admite la administración de planes SQL en tiempo real. Esta característica evita las regresiones del rendimiento de SQL al detectar los cambios en el plan de ejecución, evaluarlos en comparación con planes anteriores y seleccionar el plan con el mejor rendimiento a partir de una referencia del plan SQL, según sea necesario. Este proceso es transparente y no requiere intervención manual.

Para habilitar la administración de planes SQL en tiempo real en RDS para Oracle, utilice `DBMS_SPM.CONFIGURE` para activar la tarea de evolución automática. A continuación, utilice el paquete `rdsadmin.rdsadmin_spm_util` para configurar los parámetros de la tarea propiedad de SYS.

**Topics**
+ [Descripción general](#Oracle.RealTimeSPM.Overview)
+ [Requisitos](#Oracle.RealTimeSPM.Requirements)
+ [Habilitación de la administración de planes SQL en tiempo real](#Oracle.RealTimeSPM.Enabling)
+ [Verificación de la configuración](#Oracle.RealTimeSPM.Verifying)
+ [Desactivación de la administración de planes SQL en tiempo real](#Oracle.RealTimeSPM.Disabling)
+ [procedimientos rdsadmin\_spm\_util](#Oracle.RealTimeSPM.Procedures)
+ [Supervisión de las referencias del plan SQL](#Oracle.RealTimeSPM.Monitoring)
+ [Consideraciones](#Oracle.RealTimeSPM.Considerations)
+ [Recursos relacionados](#Oracle.RealTimeSPM.Resources)

## Descripción general
<a name="Oracle.RealTimeSPM.Overview"></a>

Se produce una regresión del rendimiento de SQL cuando el optimizador de Oracle elige un nuevo plan de ejecución que funciona peor que un plan anterior. La administración de planes SQL en tiempo real automatiza la detección y la prevención de estas regresiones.

Cuando la administración de planes SQL en tiempo real está habilitada, la base de datos hace lo siguiente:

1. Detecta cambios en el plan de ejecución en tiempo real.

1. Evalúa el rendimiento del nuevo plan en comparación con los planes anteriores.

1. Crea o actualiza automáticamente las referencias del plan SQL.

1. Selecciona el plan con mejor rendimiento para evitar regresiones.

## Requisitos
<a name="Oracle.RealTimeSPM.Requirements"></a>

Para utilizar la administración de planes SQL en tiempo real, la instancia de base de datos debe cumplir los siguientes requisitos:
+ Oracle Database 26ai o superiores
+ Oracle Enterprise Edition

## Habilitación de la administración de planes SQL en tiempo real
<a name="Oracle.RealTimeSPM.Enabling"></a>

Para habilitar la administración de planes SQL en tiempo real, complete los dos pasos siguientes.

### Paso 1: activación de la tarea de evolución automática de SPM
<a name="Oracle.RealTimeSPM.Enabling.Step1"></a>

Ejecute la siguiente instrucción como usuario maestro o como usuario con el rol de DBA:

```
BEGIN
  DBMS_SPM.CONFIGURE('AUTO_SPM_EVOLVE_TASK', 'AUTO');
END;
/
```

### Paso 2: configuración de los parámetros de la tarea propiedad de SYS
<a name="Oracle.RealTimeSPM.Enabling.Step2"></a>

La tarea `SYS_AUTO_SPM_EVOLVE_TASK` es propiedad de SYS. RDS para Oracle proporciona el paquete `rdsadmin.rdsadmin_spm_util` para este propósito.

Establezca `ACCEPT_PLANS` en `TRUE` para que la base de datos acepte automáticamente los planes evolucionados:

```
EXEC rdsadmin.rdsadmin_spm_util.set_evolve_task_accept_plans('TRUE');
```

(Opcional) Establezca el origen del plan alternativo en `AUTO`:

```
EXEC rdsadmin.rdsadmin_spm_util.set_evolve_task_alternate_plan_source('AUTO');
```

## Verificación de la configuración
<a name="Oracle.RealTimeSPM.Verifying"></a>

Para comprobar que la administración de planes SQL en tiempo real está habilitada, ejecute la siguiente consulta:

```
SELECT parameter_value
FROM DBA_SQL_MANAGEMENT_CONFIG
WHERE parameter_name = 'AUTO_SPM_EVOLVE_TASK';
```

Esta consulta devuelve `AUTO`.

Para comprobar la configuración de los parámetros de la tarea, ejecute la siguiente consulta:

```
SELECT parameter_name, parameter_value
FROM DBA_ADVISOR_PARAMETERS
WHERE task_name = 'SYS_AUTO_SPM_EVOLVE_TASK'
  AND parameter_name IN ('ACCEPT_PLANS', 'ALTERNATE_PLAN_SOURCE');
```

## Desactivación de la administración de planes SQL en tiempo real
<a name="Oracle.RealTimeSPM.Disabling"></a>

Para desactivar la administración de planes SQL en tiempo real, ejecute la siguiente instrucción:

```
BEGIN
  DBMS_SPM.CONFIGURE('AUTO_SPM_EVOLVE_TASK', 'OFF');
END;
/
```

## procedimientos rdsadmin\_spm\_util
<a name="Oracle.RealTimeSPM.Procedures"></a>

El paquete `rdsadmin.rdsadmin_spm_util` proporciona los siguientes procedimientos.


**procedimientos rdsadmin\_spm\_util**  

| Procedimiento | Parámetro | Predeterminado | Descripción | 
| --- | --- | --- | --- | 
| `set_evolve_task_accept_plans` | `p_value` | `'TRUE'` | Establezca el parámetro `ACCEPT_PLANS` para `SYS_AUTO_SPM_EVOLVE_TASK`. Los valores válidos son `'TRUE'` y `'FALSE'`. | 
| `set_evolve_task_alternate_plan_source` | `p_value` | `'AUTO'` | Establezca el parámetro `ALTERNATE_PLAN_SOURCE` para `SYS_AUTO_SPM_EVOLVE_TASK`. Los valores válidos son `'AUTO'`, `'CURSOR_CACHE'`, `'AUTOMATIC_WORKLOAD_REPOSITORY'` y `'SQL_TUNING_SET'`. | 

## Supervisión de las referencias del plan SQL
<a name="Oracle.RealTimeSPM.Monitoring"></a>

Después de habilitar la administración de planes SQL en tiempo real, puede supervisar las referencias del plan que la base de datos administra automáticamente:

```
SELECT SQL_HANDLE, PLAN_NAME, ENABLED, ACCEPTED, AUTOPURGE
FROM DBA_SQL_PLAN_BASELINES
ORDER BY LAST_MODIFIED DESC;
```

## Consideraciones
<a name="Oracle.RealTimeSPM.Considerations"></a>

Cuando utilice la administración de planes SQL en tiempo real, tenga en cuenta lo siguiente:
+ Los usuarios con el rol de DBA pueden llamar a `DBMS_SPM.CONFIGURE` directamente. Este paso no requiere un envoltorio.
+ Los procedimientos `rdsadmin.rdsadmin_spm_util` son necesarios para configurar los parámetros de la tarea `SYS_AUTO_SPM_EVOLVE_TASK` propiedad de SYS, ya que el usuario maestro no tiene acceso directo a las tareas del asesor propiedad de SYS.
+ La administración de planes SQL en tiempo real funciona de forma transparente. No necesita cambiar el código de la aplicación.
+ Las referencias del plan SQL consumen espacio en el espacio de tablas de SYSAUX. Supervise el uso de SYSAUX después de habilitar la característica.
+ Los valores de los parámetros transferidos a `DBMS_SPM.CONFIGURE` (como `'AUTO'` y `'OFF'`) distinguen mayúsculas de minúsculas. Utilice valores en mayúscula.

## Recursos relacionados
<a name="Oracle.RealTimeSPM.Resources"></a>
+ [DBMS\_SPM](https://docs.oracle.com/en/database/oracle/oracle-database/26/arpls/DBMS_SPM.html) en la documentación de Oracle Database
+ [Administración de las referencias del plan SQL](https://docs.oracle.com/en/database/oracle/oracle-database/26/tgsql/managing-sql-plan-baselines.html) en la documentación de Oracle Database