Aceptar, deshabilitar y eliminar un SQL profile
OracleRendimientoComando
-- 1) Accept the profile recommended by the tuning task:
DECLARE
l_name VARCHAR2(128);
BEGIN
l_name := DBMS_SQLTUNE.ACCEPT_SQL_PROFILE(
task_name => '<task_name>',
name => 'PROF_<sql_id>',
description => 'STA recommendation, CHG-1234',
force_match => TRUE, -- also matches statements differing only in literals
replace => TRUE);
DBMS_OUTPUT.PUT_LINE('Profile: ' || l_name);
END;
/
-- 2) Profiles and the cursors using them:
SELECT name, category, status, force_matching,
TO_CHAR(created,'YYYY-MM-DD HH24:MI') AS created
FROM dba_sql_profiles
ORDER BY created DESC;
SELECT sql_id, child_number, plan_hash_value, sql_profile
FROM v$sql
WHERE sql_profile IS NOT NULL;
-- 3) Temporarily disable / drop:
EXEC DBMS_SQLTUNE.ALTER_SQL_PROFILE(name => 'PROF_<sql_id>', attribute_name => 'STATUS', value => 'DISABLED');
EXEC DBMS_SQLTUNE.DROP_SQL_PROFILE(name => 'PROF_<sql_id>', ignore => TRUE);Qué hace
Un SQL profile da al optimizador correcciones adicionales de cardinalidad/selectividad (OPT_ESTIMATE y similares) para que genere un plan mejor sin cambiar el texto del SQL; con FORCE_MATCH también se aplica a sentencias que solo difieren en los literales.
Cuándo usarlo
Cuando el SQL no se puede cambiar (aplicación empaquetada), cuando STA recomienda una mejora validada, o como corrección rápida de una regresión de plan.
Precaución
Requiere la licencia de Tuning Pack. Un profile no "fija" el plan; corrige estimaciones, así que el plan aún puede cambiar cuando cambia la distribución de los datos. Si la estabilidad del plan es obligatoria, use un SQL plan baseline. Cuando existen ambos, el optimizador elige entre los planes aceptados del baseline. Lea siempre los resultados de validación (la sección 'Validation results' del informe) antes de aceptar.
Relacionado
- Tomar un snapshot de AWR y generar un informe AWR entre dos snapshots
- Informe AWR diff (compare period) entre dos periodos
- Top wait events y top SQL desde ASH para los últimos minutos
- Ejecutar un análisis ADDM y obtener su informe
- Obtener un informe de SQL Monitor (SQL largo en ejecución o finalizado)
- Habilitar/deshabilitar el trace 10046 para una sesión y resumirlo con TKPROF