IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration Oracle Discussion :

cursor_sharing similar ou force


Sujet :

Administration Oracle

  1. #1
    Membre confirmé
    Inscrit en
    Août 2009
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2009
    Messages : 107
    Par défaut cursor_sharing similar ou force
    Bonjour,

    avec cursor_sharing à similar et même à force, j'exécute la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table where col1='abcd'
    puis la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table where col1='abcde'
    Et dans la vue v$sqlarea, je vois deux curseurs ?!

    Je ne sais pas trop pour le mode similar, mais pour le mode force ne devrais je pas avoir un seul curseur dans v$sqlarea ?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 750
    Par défaut
    tu dois avoir des histogrammes calculés sur cette colonne.

  3. #3
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Citation Envoyé par mongolic Voir le message
    Bonjour,

    avec cursor_sharing à similar et même à force, j'exécute la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table where col1='abcd'
    puis la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table where col1='abcde'
    Et dans la vue v$sqlarea, je vois deux curseurs ?!

    Je ne sais pas trop pour le mode similar, mais pour le mode force ne devrais je pas avoir un seul curseur dans v$sqlarea ?

    Quelle version oracle tu as ???

    en 11G

    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
     
    > alter session set cursor_sharing=force;
     
    Session altered.
     
    > select /* TEST */ ename from emp where deptno=10;
     
    ENAME
    ----------
    CLARK
    KING
    MILLER
     
    > select /* TEST */ ename from emp where deptno=20;
     
    ENAME
    ----------
    SMITH
    JONES
    SCOTT
    ADAMS
    FORD
    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
     
    >  select child_number, executions, buffer_gets,
      2      is_bind_sensitive, is_bind_aware
      3    from v$sql
      4  where sql_text like 'select /* TEST%'
      5  /
     
    no rows selected
     
    > /
     
    CHILD_NUMBER EXECUTIONS BUFFER_GETS I I
    ------------ ---------- ----------- - -
               0          1          70 N N
               0          1           8 N N

    en 10G

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    > ed
    Wrote file afiedt.buf
     
      1   select child_number, executions, buffer_gets
      2    from v$sql
      3* where sql_text like 'select /* TEST%'
      4  /
     
    CHILD_NUMBER EXECUTIONS BUFFER_GETS
    ------------ ---------- -----------
               0          2          80
    et pas d'histogramme !!

  4. #4
    Membre confirmé
    Inscrit en
    Août 2009
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2009
    Messages : 107
    Par défaut histogrammes
    j'ai une 9.0.2.6

    Sinon je ne comprends pas l'impact des histogrammes dans le mode force. Je pensais que dans le mode force, il partageait le curseur dans tous les cas ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 750
    Par défaut
    oui avec le cursor_sharing = FORCE même si t'as des histogrammes il va partager le même cursor.

    Es-tu sûr de ton test ?

    peux tu nous envoyer ton test case faisant apparaitre le alter session, les requêtes avec les valeurs ainsi que la requête de v$sql.
    Fais un flush de la shared_pool avant

  6. #6
    Membre confirmé
    Inscrit en
    Août 2009
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2009
    Messages : 107
    Par défaut
    Voilà le test que j'ai fait
    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
    SQL> alter system flush shared_pool;
     
    System altered.
     
    SQL> show parameter cursor_sharing
    cursor_sharing                       string                           FORCE
     
    SQL> select * from v$sqlarea where sql_text like '%/* TEST */%';
     
    no rows selected
     
    SQL>  select /* TEST */ 1 from ZY00 where nudoss=1234;
     
    no rows selected
     
    SQL> select /* TEST */ 1 from ZY00 where nudoss=123;
     
    no rows selected
     
    SQL> select * from v$sqlarea where sql_text like '%/* TEST */%';
     
    select /* TEST */ :"SYS_B_0" from ZY00 where nudoss=:"SYS_B_1"
           20104           1096        1840          0             1               1             0             1          1          1               0          1 2009-08-26/11:56:19             0           1          0           2              0            3 CHOOSE                                  0
                    0             0 070000003A699EF8 2126487067 sqlplus                                                                    0                                                                            0                   0      10000          577 N           4
     
     select /* TEST */ :"SYS_B_0" from ZY00 where nudoss=:"SYS_B_1"
           20137           1096        1840          0             1               1             0             1          1          1               0          1 2009-08-26/11:56:15             0           1          0        1070              0            3 CHOOSE                                  0
                    0             0 070000003967D3D0 2999271152 sqlplus                                                                    0                                                                            0                   0      20000        21584 N           2
     
    SQL>  SELECT child_number, executions, buffer_gets FROM v$sql WHERE sql_text LIKE '%/* TEST */%';
     
    CHILD_NUMBER EXECUTIONS BUFFER_GETS
    ------------ ---------- -----------
               0          1        1070
               0          1           2
    en fait entre les deux il y a un espace en début de ligne de différence ! si j'enlève cet espace, çà fonctionne correctement !

    désolé et merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [cryptage]algo de force brut ?
    Par Regis.C dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 09/08/2005, 16h15
  2. Arrêt forcé dans une boucle
    Par cquadjul dans le forum C++Builder
    Réponses: 20
    Dernier message: 21/07/2005, 09h15
  3. [JFileChooser]Sauver un fichier avec extension forcée
    Par FLCEOAP dans le forum Agents de placement/Fenêtres
    Réponses: 10
    Dernier message: 03/03/2005, 01h11
  4. Gérer un volant a retour de force ...
    Par olive-sjs dans le forum OpenGL
    Réponses: 2
    Dernier message: 26/02/2004, 08h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo