Comment obtenir le sql_id d'une requête dans Oracle ?

Vous pouvez avoir besoin d'obtenir le sql_id d'une requête dans Oracle pour résoudre un problème de performance ou simplement pour vérifier certaines statistiques.

C'est la façon la plus simple de procéder.

Vous interrogez v$sql avec un texte dont vous savez qu'il est contenu dans votre requête.

SELECT sql_id, plan_hash_value, SUBSTR(sql_text,1,40) Text
FROM v$sql
WHERE sql_text LIKE '%&An_Identifiable_String%';

Si vous ne le trouvez pas dans la requête ci-dessus, vous pouvez utiliser cette autre requête qui va encore plus loin dans le passé.

Il s'agit d'une requête qui associe dba_hist_sqlstat et dba_hist_sqltext.

SELECT
    s.sql_id,
    s.plan_hash_value,
    t.sql_text,
    s.snap_id
FROM
    dba_hist_sqlstat   s,
    dba_hist_sqltext   t
WHERE s.dbid = t.dbid
AND   s.sql_id = t.sql_id
AND   sql_text LIKE 'SELECT /* TARGET SQL */%'
ORDER BY
    s.sql_id;

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *