Accepter, désactiver et supprimer un SQL profile
OraclePerformancesCommande
-- 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);Ce que fait la commande
Un SQL profile fournit à l'optimiseur des corrections supplémentaires de cardinalité/sélectivité (OPT_ESTIMATE et similaires) pour qu'il produise un meilleur plan sans modifier le texte SQL ; avec FORCE_MATCH, il s'applique aussi aux instructions qui ne diffèrent que par les littéraux.
Quand l'utiliser
Lorsque le SQL ne peut pas être modifié (progiciel), lorsque STA recommande une amélioration validée, ou comme correction rapide d'une régression de plan.
Attention
Exige la licence Tuning Pack. Un profile ne "verrouille" pas le plan ; il corrige les estimations, donc le plan peut encore changer quand la distribution des données change. Si la stabilité du plan est impérative, utilisez une SQL plan baseline. Lorsque les deux existent, l'optimiseur choisit parmi les plans acceptés de la baseline. Lisez toujours les résultats de validation (section 'Validation results' du rapport) avant d'accepter.
Voir aussi
- Prendre un snapshot AWR et générer un rapport AWR entre deux snapshots
- Rapport AWR diff (compare period) entre deux périodes
- Principaux événements d'attente et principaux SQL depuis ASH pour les dernières minutes
- Lancer une analyse ADDM et obtenir son rapport
- Obtenir un rapport SQL Monitor (SQL long en cours ou terminé)
- Activer/désactiver la trace 10046 pour une session et la résumer avec TKPROF