DBAtlas · Atlas d'exploitation des bases de données

Accepter, désactiver et supprimer un SQL profile

OraclePerformances

Commande

-- 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.

Ouvrir dans DBAtlas →

Voir aussi