Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Administration
Administration Forum d'entraide sur l'administration du serveur Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/09/2007, 18h48   #1
Membre expérimenté
 
Inscription : juillet 2007
Messages : 495
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2007
Messages : 495
Points : 585
Points : 585
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 :
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 :
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.
dgi77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2007, 20h07   #2
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Quelle est la version exacte d'Oracle utilisée ?

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

Code :
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.
Citation:
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.
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 11h23   #3
Membre expérimenté
 
Inscription : juillet 2007
Messages : 495
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2007
Messages : 495
Points : 585
Points : 585
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 :
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>
dgi77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 11h45   #4
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
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
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 13h51   #5
Membre expérimenté
 
Inscription : juillet 2007
Messages : 495
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2007
Messages : 495
Points : 585
Points : 585
Merci beaucoup, ça marche effectivement en modifiant la session comme indiqué dans ton lien :

Code :
1
2
 
ALTER session SET nls_numeric_characters = '.,';
Notre migration en 10g a malheureusement été différée...
dgi77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h24.


 
 
 
 
Partenaires

Hébergement Web