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 :

Lenteur dans un logiciel qui tourne sous Oracle [10gR2]


Sujet :

Administration Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Lenteur dans un logiciel qui tourne sous Oracle
    Bonjour,

    Je suis un utilisateur avec peu d’expérience sous Oracle. J'ai un sujet à vous soumettre concernant un problème de lenteur dans une application de comptabilité. Celle ci tourne sur Oracle 10 GR2.
    Dans cette application un traitement qui doit durer 1 min dure plus d'une heure.
    Le reclacul des statistiques ne donne rien.
    Pour rétablir la situation il a fallu supprimer la base sous Oracle, la restaurer et lancer un recalcul des statistiques.
    Cela a fonctionné pendant 1 mois mais le problème est revenu.
    Dans cette base il y a régulièrement des grandes quantités de données qui sont importées.
    Le fait de restaurer la base sous Oracle vous parait elle être un manipulation classique ? Savez vous s'il peut avoir un autre traitement d'optimisation que l'on peut lancer ?
    Merci de votre aide.

  2. #2
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    Il faut appeler à des connaissances d'un DBA.
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2012
    Messages : 127
    Points : 339
    Points
    339
    Par défaut
    Bonjour,

    Vu le descriptif du problème, j'examinerai en priorité l'hypothèse d'une fragmentation d'index. Ça cadre avec la baisse de performance qui reste après le recalcul des statistiaques, et si on fait régulièrement des insertions et des suppressions de gros volumes de données, c'est une chose qui peut survenir et revenir... Reconstruisez vos index (alter index index_name rebuild;) et voyez s'il y a une amélioration...

    Et sinon, les tablespaces sur lesquels se trouvent vos objets sont bien locally managed et non en dictionary managed?

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci pour ces retours.
    Baldrick, comment puis je faire pour lancer la reconstruction de tous les index d'un schema ?
    Comment savoir si mon tablespace est en locally managed ?

  5. #5
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Arrêtez d'avancer dans le brouillard!
    ...
    Dans cette application un traitement qui doit durer 1 min dure plus d'une heure...
    Faite une trace étendue du traitement en question pour comprendre l'origine de vos problèmes.

  6. #6
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2012
    Messages : 127
    Points : 339
    Points
    339
    Par défaut
    Pour savoir si un tablespace est géré localement ou par le dictionnaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select tablespace_name, extent_management
    from   dba_tablespaces;
    Pour reconstruire tous les index d'un schéma, essayez ce script, en renseignant simplement la variable vOWNER avec le nom du schéma :

    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
     
    DECLARE 
     vOWNER varchar2(30) := 'USER';
    BEGIN                                                                                                                                                                
       -- index de tables non partitionnées                                                                                                                          
       for idx in (                                                                                                                                                    
          select 
               i.owner     ,                                                                                                                                                      
               i.index_name                                                                                                                                                                                                                                                                                                                                                                                                                         
             from dba_indexes i                                                                                                                                          
             where i.partitioned='NO' 
             and owner= vOWNER                                                                                                                                 
             and index_type not in ('LOB','IOT - TOP')                                                                                                                    
          )                                                                                                                                                               
          loop                                                                                                                                                            
             begin                                                                                                                                                        
                execute immediate 'alter index ' || idx.owner || '."' || idx.index_name ||'" rebuild online compute statistics';   
             end;                                                                                                                                                         
          end loop;                                                                                                                                                       
     
          -- index de tables partitionnées                                                                                                                              
          for idxpart in (                                                                                                                                                    
             select    
               ip.index_owner,                                                                                                                                                   
               ip.index_name,                                                                                                                                                                                                                                                                                 
               ip.partition_name                                                                                                                                          
             from dba_ind_partitions ip 
             where index_owner = vOWNER                                                                                                                                 
          )                                                                                                                                                               
          loop                                                                                                                                                            
             begin                                                                                                                                                        
                execute immediate 'alter index ' || idxpart.index_owner || '."' ||idxpart.index_name||'" rebuild partition "'||idxpart.partition_name || '"';
             end;                                                                                                                                                         
          end loop;                                                                                                                                                       
    end;   
    /

  7. #7
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    A quoi sert de reconstruire tous les index d'une schéma ?

  8. #8
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci pour vos retour.
    Voici ou j'en suis :

    Baldrick :
    Tous les tablespaces sont gérés en local.

    La reconstruction des index ne permet pas de rétablir un temps de traitement normal. Faut il lancer un recalcul des stats derrière ?

    mnitu : Comment fait on une trace étendue ?
    J'ai demandé la reconstruction de tous les index car je ne sais sur quel index lancer la reconstruction.

  9. #9
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Regarder le package dbms_monitor.

  10. #10
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2007
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2007
    Messages : 419
    Points : 616
    Points
    616
    Par défaut
    bonsoir,

    c'était apparemment un export/import plutôt qu'une restauration. si cela a résolu les problèmes, c'est bien qu'il fallait une réorg. à replanifier aussi souvent que nécessaire (shrink des tables et rebuild des indexes).
    ceci dit, on ne parle pas de suppressions et d'insertions, mais seulement d'insertions, donc on semble être face à un problème de volumétrie. quel volume est inséré? quel est le volume total de la table? pouvez-vous (ou le dba) voir si le plan d'exécution a changé? et c'est quoi ce traitement? quel est son plan d'exécution? êtes vous sûr qu'il y a des indexes où c'est nécessaire?
    ça ne sert à rien de raisonner dans le vide. donnez nous ce qu'il faut pour qu'on ait une idée moins vague s'il vous plait. quid de la charge de la charge de la machine? elle est mutualisée? vous avez demandé des analyses sur la consommation CPU , mémoire et I/O? il y a eu des changements récents sur celle-ci?
    bonne soirée

  11. #11
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Apparemment un delete des stats avec un recalcul des stats ensuite semble corriger le problème.
    Je vous remercie de votre aide.

    Cordialement
    Hicks

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

Discussions similaires

  1. programme qui tourne sous win98 et plante sous win xp
    Par serrepate dans le forum Windows
    Réponses: 7
    Dernier message: 24/06/2007, 13h13
  2. Faire un host echo dans un fichier en sql sous oracle
    Par NouWaT dans le forum Sql*Plus
    Réponses: 2
    Dernier message: 04/06/2007, 15h32
  3. Réponses: 2
    Dernier message: 23/04/2006, 21h02
  4. requette sql qui passe sous oracle 9i mais pas en 8i
    Par maxidoove dans le forum Oracle
    Réponses: 3
    Dernier message: 21/10/2005, 10h59

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