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;