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 :

Utilisation de DBMS_STATS.AUTO_SAMPLE_SIZE


Sujet :

Administration Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Points : 639
    Points
    639
    Par défaut Utilisation de DBMS_STATS.AUTO_SAMPLE_SIZE
    Bonjour,

    J'essaye de passer les stats d'un table avec le package DBMS_STATS en utilisant la constante DBMS_STATS.AUTO_SAMPLE_SIZE pour estimate_percent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    begin
       DBMS_STATS.GATHER_TABLE_STATS
       (ownname => 'XXX',
       tabname => 'YYY',
       estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,
       cascade => TRUE);
    end;
    /
    Ca plante avec, le message est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ORA-00933: La commande SQL ne se termine pas correctement
    ORA-06512: à "SYS.DBMS_STATS", ligne 9375
    ORA-06512: à "SYS.DBMS_STATS", ligne 9389
    ORA-06512: à ligne 2
    Si je remplace DBMS_STATS.AUTO_SAMPLE_SIZE par 10 en dur, ça marche.

    J'ai remarqué que la valeur de DBMS_STATS.AUTO_SAMPLE_SIZE est 0, or la doc. Oracle spécifie que la plage de valeurs possible est [0.000001,100].
    En effet, si je remplace DBMS_STATS.AUTO_SAMPLE_SIZE par 0, ça plante avec le même message d'erreur.

    Y a-t-il une actions préalable à faire pour utiliser DBMS_STATS.AUTO_SAMPLE_SIZE ?
    Doit-on intervenir à la création du package DBMS_STATS sur la valeur de DBMS_STATS.AUTO_SAMPLE_SIZE ?

    Merci pour vos réponses.
    Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Quelle est la version exacte d'Oracle utilisée ?

    Je n'arrive pas à reproduire ce comportement avec XE:

    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
    SQL> select * from v$version;
     
    BANNER
    ----------------------------------------------------------------
    Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product
    PL/SQL Release 10.2.0.1.0 - Production
    CORE    10.2.0.1.0      Production
    TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
    NLSRTL Version 10.2.0.1.0 - Production
     
    SQL> show user;
    USER is "TEST"
    SQL>
    SQL> desc t;
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     
     X                                                  NUMBER(38)
     Y                                                  CLOB
     
    SQL>
    SQL> begin
      2     DBMS_STATS.GATHER_TABLE_STATS
      3     (ownname => 'TEST',
      4     tabname => 'T',
      5     estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,
      6     cascade => TRUE);
      7  end;
      8  /
     
    PL/SQL procedure successfully completed.
     
    SQL>
    SQL>
    SQL> begin
      2     DBMS_STATS.GATHER_TABLE_STATS
      3     (ownname => 'TEST',
      4     tabname => 'T',
      5     estimate_percent => 0,
      6     cascade => TRUE);
      7  end;
      8  /
     
    PL/SQL procedure successfully completed.
    Y a-t-il une actions préalable à faire pour utiliser DBMS_STATS.AUTO_SAMPLE_SIZE ?
    Doit-on intervenir à la création du package DBMS_STATS sur la valeur de DBMS_STATS.AUTO_SAMPLE_SIZE ?
    La documentation de la 9i ou la 10g ne dit rien: cela ne semble donc pas nécessaire.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Points : 639
    Points
    639
    Par défaut
    Bonjour,

    Je suis en version 9i.
    Vous pouvez voir ci-dessous que ça ne passe pas avec DBMS_STATS.AUTO_SAMPLE_SIZE, ni avec 0, mais ça passe avec 10.

    Je ne comprends pas non pus, et je n'ai rien trouvé dans la doc Oracle qui puisse expliquer ce comportement.

    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
     
    SQL*Plus: Release 9.2.0.1.0 - Production on Je Sep 13 11:19:58 2007
     
    Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
     
     
    Connecté à :
    Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
    With the Partitioning option
    JServer Release 9.2.0.4.0 - Production
     
    SQL> begin
      2     DBMS_STATS.GATHER_TABLE_STATS(ownname => 'CPVIJ', tabname => 'WAREHOUSE_REDEC_RTE', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, cascade => TRUE);
      3  end;
      4  /
    begin
    *
    ERREUR à la ligne 1 :
    ORA-00933: La commande SQL ne se termine pas correctement
    ORA-06512: à "SYS.DBMS_STATS", ligne 9375
    ORA-06512: à "SYS.DBMS_STATS", ligne 9389
    ORA-06512: à ligne 2
     
     
    SQL> ed
    écrit fichier afiedt.buf
     
      1  begin
      2     DBMS_STATS.GATHER_TABLE_STATS(ownname => 'CPVIJ', tabname => 'WAREHOUSE_REDEC_RTE', estimate_percent => 0, cascade => TRUE);
      3* end;
    SQL> /
    begin
    *
    ERREUR à la ligne 1 :
    ORA-00933: La commande SQL ne se termine pas correctement
    ORA-06512: à "SYS.DBMS_STATS", ligne 9375
    ORA-06512: à "SYS.DBMS_STATS", ligne 9389
    ORA-06512: à ligne 2
     
     
    SQL> ed
    écrit fichier afiedt.buf
     
      1  begin
      2     DBMS_STATS.GATHER_TABLE_STATS(ownname => 'CPVIJ', tabname => 'WAREHOUSE_REDEC_RTE', estimate_percent => 10, cascade => TRUE);
      3* end;
    SQL> /
     
    Procédure PL/SQL terminée avec succès.
     
    SQL>
    Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !

  4. #4
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    D'après cette discussion OTN, il s'agit d'un bug spécifique à la 9.2.0.3 et 9.2.0.4.
    Voir le contournement dans la discussion.

    C'est peut-être aussi le moment d'installer le dernier patchset 9.2.0.8 ou encore mieux de passer à la 10G

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Points : 639
    Points
    639
    Par défaut
    Merci beaucoup, ça marche effectivement en modifiant la session comme indiqué dans ton lien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alter session set nls_numeric_characters = '.,';
    Notre migration en 10g a malheureusement été différée...
    Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !

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

Discussions similaires

  1. utilisation de dbms_stats
    Par learn dans le forum Oracle
    Réponses: 3
    Dernier message: 03/05/2006, 10h36
  2. utilisation de dbms_stats
    Par olabo dans le forum Oracle
    Réponses: 2
    Dernier message: 24/08/2005, 18h21
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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