Bonjour,
Je cherche à avoir plus d'explication sur cette colomne
.Quel est l'inconvénient d'un grand nombre de version count, et comment le diminuer?VERSION_COUNT
NUMBER
Number of child cursors that are present in the cache under this parent
Bonjour,
Je cherche à avoir plus d'explication sur cette colomne
.Quel est l'inconvénient d'un grand nombre de version count, et comment le diminuer?VERSION_COUNT
NUMBER
Number of child cursors that are present in the cache under this parent









Bonjour Aline,
Je crois me souvenir que c'est quand pour la même requête tu as plusieurs plans d'exécution différent (environnements différents...)
Laly.
In the heart of the truly greats, perfection is never achieved but endlessly pursued.
Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)
Bonjour Laly,
J'ai cela comme réponse (qui est en fait plus ou moins la même que la tienne) mais cela ne me convient pas
Cela ne me convient pas, car dans ma SGA, j'ai une requête qui est sur un seul object et dont la version_count est égale à 1026! Ily a donc quelque chose qui m'echappe et cela me pose des contentions énormes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Oracle uses multiple child cursors to distinguish SQL statements that are identical in their characters but cannot be shared because they refer to different undelying objects.









D'où viens cette requête ? D'un ref cursor ? Etant donné que la requête d'un ref curseur est systématiquement reparsée à chaque open ca pourrait être ca...
Laly.
In the heart of the truly greats, perfection is never achieved but endlessly pursued.
Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)
Non, c'est une bête requête dans une appli via OCI. De plus, si j'ai bien compris, version_count n'a aucun rapport avec le parse. Il y a la colonne parse_call pour cela.Envoyé par lalystar
De plus, la même requête est trois fois dans la sql area.
ce n'est pas la seule et c'est un phénomène que j'ai du mal à m'expliquer aussi.
Bonjour Aline,
Tout d'abord, en quelle version d'Oracle es-tu STP ???
Sinon, pour moi il y a 2 choses :
1 ) le fait que tu observes ta requête plusieurs fois dans la vue V$SQLAREA signifie qu'elles n'ont pas la même valeur de HASH_VALUE, ce qui signifirait que le texte de la requête diffère légerement (genre majuscule / minuscule ou espace en plus. Tu ne serais pas en Oracle 8i ???)
2 ) la VERSION_COUNT indique effectivement qu'il y a plusieurs versions pour la même requête. Cela indique une différence de contexte entre les sessions. Un exemple pour être clair :
J'ai la requête suivante (testée en 9i) :
Si je l'exécute, je trouve le texte de cette requête une fois dans la vue V$SQLAREA (avec VERSION_COUNT à 1), et 1 fois dans la vue V$SQL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part select * from credit where rownum < 10 order by mnemonique ;
Maintenant, si j'exécute à nouveau cette requête, mais en la précédant d'un :
Le contexte a changé (car le tri demandé par le ORDER BY dépend de la langue). Du coup, je trouve le texte de cette requête 1 fois dans V$SQLAREA, mais avec le VERSION_COUNT à 2, et 2 fois dans la vue V$SQL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part alter session set nls_language='AMERICAN' ;
Voir à ce sujet l'article de Thomas Kyte :
http://asktom.oracle.com/pls/ask/f?p=4950:8:2815850657935952737::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:385254862843
Il me semble que le version_count prend aussi en compte les invalidations de la requete. (suite alter table, index, etc..)
Envoyé par rouardg
Bonjour Rouardg,
version=9.2.0.6
1) pas d'accord, puisque l'on passe toujours pas ma même appli. Voici les résultats de deux requêtes interessantes je pense qui cible bien le problème.
2) Il ne peux y avoir de différence de contexte puisque c'est toujours le même executable qui fait la requête dans la même session.
oui, en effet, mais ce n'est pas le cas ici.Envoyé par Mcm
Quand on regarde le problème, on se rends compte que certaines requêtes ne sont ni executés, ni parsées.
Le problème vient surement de la, mais pourquoi???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 select v.SQL_TEXT, v.VERSION_COUNT, v.EXECUTIONS, v.PARSE_CALLS, v.MODULE from v$sqlarea v where sql_text like'call CLIENT.ENREGISTRER%' order by v.VERSION_COUNT desc 1 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5,) 51 902 98 loader.exe select v.SQL_TEXT, v.SHARABLE_MEM,v.EXECUTIONS,v.PARSE_CALLS,v.OPTIMIZER_MODE, v.OPTIMIZER_COST, v.PARSING_USER_ID, v.OBJECT_STATUS, v.LAST_LOAD_TIME from v$sql v where sql_text like'call CLIENT.ENREGISTRER%' order by 1 desc SQL_TEXT HASH_VALUE SHARABLE_MEM EXECUTIONS PARSE_CALLS PARSING_USER_ID OBJECT_STATUS LAST_LOAD_TIME 1 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 2 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 3 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 4 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 5 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 6 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 7 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 8 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 9 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 10 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 11 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 12 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 13 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 14 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 15 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 16 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 17 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 18 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 19 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 20 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 21 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 22 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 23 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 24 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 25 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 26 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 27 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 28 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 29 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 30 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 31 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 32 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 33 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 34 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 35 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 36 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 37 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 38 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 39 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 40 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 41 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 42 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 43 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 44 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 45 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 46 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 47 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 48 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 49 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 15655 324 63 CHOOSE 0 65 INVALID_UNAUTH 2005-09-13/13:55:19 50 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 6343 0 0 NONE 0 51 call CLIENT.ENREGISTRER (:1, :2, :3, :4, :5, :6) 2304951881 15955 581 37 CHOOSE 0 65 VALID 2005-09-13/23:19:49
Je viens de passer le paramêtre sursor_sharing de 'similar' à force et pour l'instant, version_count ne s'incrémente plus.
Je n'ai pas d'explication et ne sait pas si cela va résoudre mon problème, mais en tout cas, pour l'instant, le résultat est la....
il suffit d'une valeur en "dur" qui change selon le contexte et voila, t'as plusieurs version.
Le mode SIMILAR permet de "binder" les constantes en dur![]()
Rebonjour Aline,
Merci de jeter un coup d'oeil à ce très intéressant post de Ask Tom, qui répondra à ton pb.
Personnellement, j'ai du relire 2 ou 3 fois l'article pour comprendre. Par contre, c'est l'occasion de découvrir une nouvelle vue V$SQL_SHARED_CURSOR.
http://asktom.oracle.com/pls/ask/f?p=4950:8:997227819268589048::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:9497064796920
Envoyé par rouardg
Merci pour le Lien,
En effet, a première vue, il va faloir se creuser la tête pour tout comprendre. Sacré Tom!
Partager