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

Oracle Discussion :

Pb avec les stats Oracle


Sujet :

Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 49
    Points : 26
    Points
    26
    Par défaut Pb avec les stats Oracle
    Bonjour,
    j'ai un code genere avec Hibernate du genre
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    SELECT *
      FROM (SELECT   ide_patien1_.pati_id_pati AS x0_0_,
                     ide_sejour0_.sejo_id_sejo AS x1_0_,
                     ide_patien1_.pati_nom_usu AS x2_0_,
                     ide_patien1_.pati_nom_nai AS x3_0_,
                     ide_patien1_.pati_prenom AS x4_0_,
                     ide_patien1_.pati_sexe AS x5_0_,
                     ide_patien1_.pati_nip AS x6_0_,
                     ide_patien1_.pati_poids AS x7_0_,
                     ide_patien1_.pati_ind_dec AS x8_0_,
                     ide_patien1_.pati_nom_usu_maj AS x9_0_,
                     ide_patien1_.pati_nom_nai_maj AS x10_0_,
                     ide_patien1_.pati_pre_maj AS x11_0_,
                     ide_patien1_.pati_dat_nai AS x12_0_,
                     bas_uf2_.unfo_code AS x13_0_,
                     bas_uf2_.unfo_libelle AS x14_0_,
                     bas_etabli3_.etab_lib_etb AS x15_0_,
                     bas_etabli4_.etab_lib_etb AS x16_0_,
                     bas_etabli3_.etab_cod_fin AS x17_0_,
                     bas_etabli4_.etab_cod_fin AS x18_0_,
                     bas_catalo6_.cape_code AS x19_0_,
                     bas_catalo6_.cape_libelle AS x20_0_,
                     ide_sejour0_.sejo_dat_deb AS x21_0_,
                     ide_sejour0_.sejo_dat_fin AS x22_0_,
                     ide_sejour0_.sejo_num_sec_soc AS x23_0_,
                     bas_etabli5_.etab_lib_etb AS x24_0_,
                     bas_etabli5_.etab_cod_fin AS x25_0_,
                     ide_sejour0_.sejo_num_sej AS x26_0_,
                     ide_medeci8_.mede_nom_usu AS x27_0_,
                     ide_med_ve7_.mese_dat_deb AS x28_0_,
                     ide_patien1_.pati_dat_dec AS x29_0_,
                     ide_patien1_.pati_dat_dec AS x30_0_,
                     ide_sejour0_.sejo_num_arc AS x31_0_,
                     ide_sejour0_.sejo_statut AS x32_0_
                FROM ide_sejour ide_sejour0_,
                     ide_patient ide_patien1_,
                     bas_uf bas_uf2_,
                     bas_etablissement bas_etabli3_,
                     bas_etablissement bas_etabli4_,
                     bas_etablissement bas_etabli5_,
                     bas_catalogue_pers bas_catalo6_,
                     ide_med_venue ide_med_ve7_,
                     ide_medecin ide_medeci8_,
                     ide_adresse ide_adress9_,
                     bas_type_info bas_type_i11_,
                     bas_catalogue_gen bas_catalo12_,
                     bas_type_info bas_type_i13_
               WHERE ide_sejour0_.sejo_id_pati = ide_patien1_.pati_id_pati
                 AND ide_sejour0_.sejo_id_unfo = bas_uf2_.unfo_id_unfo(+)
                 AND ide_sejour0_.sejo_id_etab_des = bas_etabli3_.etab_id_etab(+)
                 AND ide_sejour0_.sejo_id_etab_pro = bas_etabli4_.etab_id_etab(+)
                 AND ide_sejour0_.sejo_id_etab_con = bas_etabli5_.etab_id_etab(+)
                 AND ide_sejour0_.sejo_id_cape_ven = bas_catalo6_.cape_id_cape(+)
                 AND ide_sejour0_.sejo_id_sejo = ide_med_ve7_.mese_id_sejo(+)
                 AND ide_med_ve7_.mese_id_mede = ide_medeci8_.mede_id_mede(+)
                 AND (    (1 = 1)
                      AND (ide_patien1_.pati_id_etab = 1059585)
                      AND (EXISTS (
                              SELECT pre_prescr10_.prme_id_prme
                                FROM pre_prescription_liste pre_prescr10_
                               WHERE (pre_prescr10_.prme_ind_pre_val = '0')
                                 AND (   (pre_prescr10_.prme_ind_pre_val_temp IS NULL
                                         )
                                      OR (pre_prescr10_.prme_ind_pre_val_temp =
                                                                               '0'
                                         )
                                     )
                                 AND (ide_patien1_.pati_id_pati =
                                                        pre_prescr10_.prme_id_pati
                                     ))
                          )
                     AND (ide_patien1_.pati_id_pati = ide_adress9_.adre_id_obj)
                     AND (    bas_type_i11_.tyin_code = 'PATIENT'
                           AND ide_adress9_.adre_id_tyin =
                                                        bas_type_i11_.tyin_id_tyin
                          )
                      AND (    bas_type_i13_.tyin_code = 'TYPE_ADR_PERS'
                           AND ide_adress9_.adre_id_cage =
                                                        bas_catalo12_.cage_id_cage
                           AND bas_catalo12_.cage_id_tyin =
                                                        bas_type_i13_.tyin_id_tyin
                          )
                      AND (    bas_catalo12_.cage_code = 'ADR_PERSO'
                           AND ide_adress9_.adre_id_cage =
                                                        bas_catalo12_.cage_id_cage
                          )
                      AND (    bas_etabli5_.etab_id_etab = 1059585
                           AND ide_sejour0_.sejo_id_etab_con = bas_etabli5_.etab_id_etab(+)
                          )
                      AND (ide_sejour0_.sejo_dat_sup IS NULL)
                      AND (ide_patien1_.pati_dat_sup IS NULL)
                      AND (ide_patien1_.pati_id_pati_mai IS NULL)
                      AND (ide_sejour0_.sejo_ind_incomplet = '0')
                     )
            ORDER BY ide_patien1_.pati_nom_usu ASC)
     WHERE ROWNUM <= 100
    Avec les stats compilees cela prend 2 min 45.
    Avec les stats deletees cela prend 40 mili secondes.

    Pourquoi ??????

    Le probleme est que j'ai besoin des stats donc je ne peux pas les deletees....... Merci pour votre reponse.

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 073
    Points
    8 073
    Par défaut
    De quelle version d'Oracle s'agit-il ?
    En 8i, ce genre de problème n'est pas rare.

    Il faut que vous compariez le plan d'exécution avec ou sans statistiques.
    Et puis vous pouvez tout à fait garder les statistiques, et forcer le mode RULE au sein de votre session durant les tests.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 49
    Points : 26
    Points
    26
    Par défaut
    Desole, c'est vrai que j'ai oublie la version Oracle.
    C'est une 8.1.7.4

    Quand au mode Rule, ce n'est pas un parametre du fichier init.ora ?

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 49
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par Pomalaix
    De quelle version d'Oracle s'agit-il ?
    En 8i, ce genre de problème n'est pas rare.

    Il faut que vous compariez le plan d'exécution avec ou sans statistiques.
    Et puis vous pouvez tout à fait garder les statistiques, et forcer le mode RULE au sein de votre session durant les tests.
    Le probleme, c'est que ce n'est pas du test :'(
    Je voudrais savoir d'ou viens ce probleme. J'ai lu et entendu que cela pouvais venir d'un probleme de densite de colonne ou autre chose.
    Merci

  5. #5
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 073
    Points
    8 073
    Par défaut
    Citation Envoyé par othon_oda
    Le probleme, c'est que ce n'est pas du test
    Mais non ce n'est pas un problème !

    Vous ouvrez une session SQL*Plus, vous faites
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SET TIMING ON
    SET AUTOTRACE ON EXPLAIN STATISTICS
    vous exécutez votre requête et vous notez le plan d'exécution

    Si besoin, il faudra d'abord exécuter UTLXPLAN.SQL situé sous %ORACLE_HOME%\rdbms\admin, pour créer la table PLAN_TABLE.

    Ensuite, pour ignorer les statistiques vous faites
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER SESSION SET OPTIMIZER_GOAL=RULE;
    vous réexécutez la requête et vous comparez le plan d'exécution.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

Discussions similaires

  1. Problémes avec les fonctions oracle
    Par Sñyders dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/04/2012, 11h40
  2. [Oracle] Problème avec les dates - Oracle et Php
    Par -Fly- dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/05/2011, 11h51
  3. Problème avec les DBLink Oracle 9i sous toad
    Par Fngonka dans le forum Toad
    Réponses: 17
    Dernier message: 02/07/2008, 13h21
  4. Data warehousing avec les solutions Oracle ,avantages/inconvénients?
    Par footmaster dans le forum Approche théorique du décisionnel
    Réponses: 3
    Dernier message: 25/02/2008, 16h27
  5. Problème avec les paramètres date BDE/ODBC Oracle/XP Pro
    Par Bloon dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/10/2004, 11h09

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