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

SQL Oracle Discussion :

Saturation CPU sur ORACLE 9.2 dans une View


Sujet :

SQL Oracle

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Saturation CPU sur ORACLE 9.2 dans une View
    Bonjour,

    Depuis le passage en Oracle 9.2, je constate de gros dysfonctionnement dans des View imbriquées.

    Pour exemple :
    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
    select i.EMAIL_PROF, o.MATRICULE, i.TITRE, i.NOM, i.PRENOM, 'FR', o.N5, o.N4, h_l.LIBELLE, o.MATRICULE, i.EMAIL_PROF, null, i.TELEPHONE_PROF
            from org_poste o, m_individu i, m_admin_gen a, h_avancement h, ar_tables h_l, V_STRUCT_ENT s1, V_STRUCT_ENT s2
           where i.seq_individu = a.seq_individu
             and o.matricule = a.matricule
    	     and o.organisation = 'PAIE'
    	     and nvl(o.date_fin,SYSDATE) >= SYSDATE
             and o.date_effet = (select max(o1.date_effet)
                                   from org_poste o1
                                  where o1.matricule = o.matricule
                                    and o1.organisation = o.organisation)
    	     and h.MATRICULE = a.matricule 
    		 and add_months(h.date_effet,nvl(INDICE,0))= (select max(add_months(h2.date_effet, nvl(h2.INDICE,0))) 
    		                        from H_AVANCEMENT h2 
    							   where h2.matricule = h.matricule) 
    		 and h_l.tab='emploi' and h.EMPLOI = h_l.code
    		 and o.N5 = s1.CODE and s1.C01 = 'site' 
    		 and o.N4 = s2.CODE and s2.C01 = 'region';
    Dans cette requet la vue V_STRUCT_ENT est une extraction restreinte d'une table ayant un nombre important d'enregistrement. Cette table est indexée, mais je ne peux mettre les statistiques en place pour optimiser le traitement car l'application sous Form6 plante si cette table a des statistiques. La mise en place des statistiques résout ce dysfonctionnement mais je ne peux les mettre en place.

    L'accès 1 fois à cette view se passe sans problème, si je dois y accéder une deuxième fois l'un des CPU (2 CPU double core) de ma base passe en saturation de 25% pendant plus de 5 minutes avant de me donner le résultat.

    Ma question est : Est ce un bug sous ORACLE 9.2, n'ayant jamais eu ce dysfonctionnement sous oracle 8i ?
    Si oui, y a t'il un Patch ou une modification de paramétrage de la base pour éviter ce dysfonctionnement .
    Avez vous déjà rencontré cela et comment avez vous traité ce problème ?

    Je vous remercie par avance de vos réponses.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Sans regarder en profondeur le code, il est fort possible que votre plan d'exécution ait été modifié lors du passage d'Oracle 8i à 9i.

    Ce que je vous conseille, c'est de regarder le plan d'exéctuion en 8i si vous l'avez encore puis en 9i, de passer les stats sur votre table, de regarder le plan d'exécution puis de supprimer immédiatement les statistiques afin de ne pas faire planter votre applicatif.

    Ensuite vous pourrez mettre des hints dans votre select afin d'obtenir à nouveau des performances dignes de ce nom !

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Je te remercie de ta réponse.

    J'ai pas tout compris pour le Hints mais ça marche comme je veux maintenant au niveau rapidité.

  4. #4
    Membre averti
    Inscrit en
    Novembre 2002
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 549
    Points : 436
    Points
    436
    Par défaut
    en parcourant très rapidement ta requete, je me permets de te donner ces quelques conseils

    évites d'utiliser les requetes imbriquées comme tu le fais, en terme de perf c'est pas du tout optimisé
    tu as avec Oracle depuis le release 9 la possibilite d'obtenir avec un bloc WITH des performances très respectables pour le type de requete que tu fais

    de plus, tu utilises à certains endrois des NVL et autres fonctions de type date (ADD_MONTHS) : attention ceci à la facheuse particularité d'inhiber les indexes, sauf si tu crées des index de type fonction (FBI)

    finalement, je te conseille de binder au maximum tes requetes. Evites les valeurs en dur comme tu le fais 'PAIE' par exemple

    ainsi, en adoptant ces quelques pratiques tu arriveras à optimiser au maximum tes requetes

    @
    PpPool

Discussions similaires

  1. [SQL / ORACLE] Supprimer espace dans une phrase
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 10
    Dernier message: 31/01/2006, 16h29
  2. [Javascript] appui sur la touche entrée dans une textbox
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/01/2006, 11h19
  3. Réponses: 1
    Dernier message: 29/09/2005, 11h10
  4. Ouvrir un fichier sur un double-clic dans une TListBox
    Par SegmentationFault dans le forum Composants VCL
    Réponses: 4
    Dernier message: 09/08/2004, 17h22
  5. problème de charge CPU SUR ORACLE
    Par crasho007 dans le forum Administration
    Réponses: 35
    Dernier message: 19/05/2004, 15h35

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