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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Février 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 9
    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 extrêmement actif
    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
    Billets dans le blog
    6
    Par défaut
    Il faut appeler à des connaissances d'un DBA.

  3. #3
    Membre expérimenté
    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
    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
    Membre habitué
    Inscrit en
    Février 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 9
    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 confirmé 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
    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 expérimenté
    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
    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 confirmé 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
    Par défaut
    A quoi sert de reconstruire tous les index d'une schéma ?

+ 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, 14h13
  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, 16h32
  3. Réponses: 2
    Dernier message: 23/04/2006, 22h02
  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, 11h59

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