Bonjour,
Je cherche à récupérer des statistiques de AWR sur les requêtes SQL mais je récupère des données étranges.
La table DBA_HIST_SQLSTAT donne le temps CPU utilisé par un curseur particulier (CPU_TIME_TOTAL). Ce temps est un temps cumulé depuis le démarrage de l'instance selon la doc Oracle. Donc mon raisonnement est le suivant :
Le temps CPU utilisé par la requête entre 2 snapshots est : CPU_TIME_TOTAL de fin - CPU_TIME_TOTAL de début.
Mais je me retrouve alors avec des temps négatifs !
Voilà un exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT s.SNAP_ID, h.STARTUP_TIME, SQL_ID, PLAN_HASH_VALUE, CPU_TIME_TOTAL*POWER(10,-6) "CPU_TIME_TOTAL", ELAPSED_TIME_TOTAL*POWER(10,-6) "ELAPSED_TIME_TOTAL" FROM DBA_HIST_SQLSTAT s, DBA_HIST_SNAPSHOT h WHERE s.SNAP_ID IN (431, 432, 433) AND SQL_ID='7ca0jht73uv92' AND s.SNAP_ID=h.SNAP_IDSi je prend comme intervalle les snap 432-433, la requête à consommé un temps CPU négatif (la requête executée 10s avant de se lancer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SNAP_ID STARTUP_TIME SQL_ID PLAN_HASH_VALUE CPU_TIME_TOTAL ELAPSED_TIME_TOTAL ---------- ------------------------------ ------------- --------------- -------------- ------------- 431 11/06/08 14:33:43,000 7ca0jht73uv92 552933365 221,775941 258,019053 432 11/06/08 14:33:43,000 7ca0jht73uv92 552933365 274,695173 315,785084 433 11/06/08 14:33:43,000 7ca0jht73uv92 552933365 11,045736 18,800089).
Je précise que j'ai plusieurs requêtes qui génère des conso. CPU négatives et pas qu'une seule... et que les valeurs négatives sont aussi pour le nombre d'exécution, de parse etc...
Est-ce que quelqu'un à une explication ?
Merci
Partager