Bonjour,
Je recherche dans l'historique d'Oracle les ordres SQL qui ont plusieurs plans d'exécution.
Voici un ordre SQL qui fait une partie du boulot : on a la liste des plans d'exécution par SQL_ID MAIS je n'arrive pas à filtrer pour ne garder que ceux avec plusieurs plans... j'ai presque honte mais je tourne en rond
Dans cet exemple, je ne veux garder que 013ahmhabwmpb qui a plus de un plan et éliminer les autres ordres.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 select distinct sql_id, PLAN_HASH_VALUE from DBA_HIST_SQLSTAT order by 1, 2 SQL_ID PLAN_HASH_VALUE 000vk52kccdvy 4230225855 00ysnfhmv9mnm 3872546376 013ahmhabwmpb 171374565 013ahmhabwmpb 2065209786 013ahmhabwmpb 2353834437 013ahmhabwmpb 2657421675 013ahmhabwmpb 2778075918 013tgmc6jgwff 3916544610
Bon ben finalement j'ai trouvé la solution
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 select sql_id, count(*) from DBA_HIST_SQLSTAT group by sql_id having count(*) > 1 order by count(*), sql_id SQL_ID COUNT(*) 013ahmhabwmpb 5
Partager