Ordres SQL avec plusieurs plan d'exécution
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 :oops:
Dans cet exemple, je ne veux garder que 013ahmhabwmpb qui a plus de un plan et éliminer les autres ordres.
Code:
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:
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 |