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 d'alimentation d'une base infocentre


Sujet :

Administration Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Par défaut Lenteur d'alimentation d'une base infocentre
    Bonjour,

    J'ai une base infocentre hébergée sur un serveur Windows 2003 SP2. Ma version d'oracle est la 10.1.0.5.

    Un traitement prend en charge le rafraîchissement de cette base toutes les nuits. Depuis un mois, Le temps de traitement a explosé. Auparavant, le traitement se terminait vers 9h le matin, maintenant il ne se termine pas avant 14h. La durée est passée de 5h à plus de 10h.

    En fait, c'est le rafraîchissement d'une table qui me pose problème (plus de 80% du temps de traitement). Cette table contient, une fois l'alimentation terminée, 11 millions de lignes (200 colonnes). Le traitement commence par faire un delete ligne par ligne d'environ 3,5 millions de lignes, puis exécute un sqlldr d'un nombre équivalent de lignes.

    Via le grid control, j'ai constaté que la session correspond au process LGWR bloque la session en charge de l'alimentation (voir pièce jointe).

    D'autre part, j'ai également des alertes liées à des waits sur des opérations commit (cf. deuxième pièce jointe).

    La taille de mes redos logs est de 500Mo.

    Je ne sais pas où chercher pour améliorer cette alimentation et je suis preneur de toutes informations.

    D'avance merci de votre aide.

    Cordialement

    Philippe
    Images attachées Images attachées   

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    C'est surement le DELETE qui est long, tu peux pas supprimer les 3.5 millions de lignes d'un coup (éviter 3.5 millions de DELETE quoi) ? Tes stats sont bien à jour ?

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    J'ajouterai au message d'orafrance que si vous devez supprimer 3.5M de lignes sur une table d'11M, vous feriez mieux au choix :
    • de recréer une table sans ces lignes, supprimer l'originale et remettre les droits et tout le reste
    • ou de supprimer tous les index (sauf celui de la clef du DELETE) et de les reconstruire après votre insert

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Ca peut aussi valoir le coup de s'intéresser aux vues matérialisées

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Par défaut
    Merci de vos réponses.

    Effectivement, si le delete est long, elle reste quand même plus rapide que le sqlldr. La phase de delete dure environ 3 heures, alors que le sqlldr dure 5h.

    Là où je suis bloqué, c'est que je ne maîtrise pas l'alimentation de l'infocentre. Je suis d'accord avec vous pour dire qu'un delete global serait préférable, ou une suppression et recréation des index, mais cete interface est fournie par un éditeur. Je ne peux qu'intervenir sur le tuning de la base de données.

    Philippe

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Ou vous pouvez faire le Jean-Pierre Coffe auprès de votre fournisseur

  7. #7
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Il n'y a pas de magie, si le développement est mal fait, aucun tuning ne pourra parfaitement combler ses carences

    Pour SQLLOADER, essaye le direct path

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Par défaut
    Citation Envoyé par orafrance Voir le message
    Il n'y a pas de magie, si le développement est mal fait, aucun tuning ne pourra parfaitement combler ses carences

    Pour SQLLOADER, essaye le direct path
    Je suis d'accord, mais ce que je ne m'explique pas, c'est pourquoi le temps de traitement a doublé pratiquement du jour au lendemain, alors que les volumes à traiter sont identiques et que rien n'a été modifié au niveau des serveurs.

    J'avais mis en place le direct path pour le sqlldr, mais le problème est qu'il écrit toujours au dessus de la marque, ce qui fait que le tablespace grossit de façon conséquente et qu'il faut réinitialiser la base pour récupérer l'espace perdu (sauf erreur de ma part).

    Philippe

  9. #9
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Le vase a fini par déborder quelque part.
    De mon côté - développeur ETL, jamais je ne me permettrai de livrer un traitement qui dure 5h pour gérer 3.5 millions de lignes.
    C'est un peu la honte quand même.

    Pour vous donner un ordre d'idée (dans un contexte différent, des machines différentes), un recalcul quotidien d'une partie d'une table agrégée, volumétrie quotidienne d'environ 5M de lignes, ça prend quatre minutes.

  10. #10
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Citation Envoyé par fulub Voir le message
    Je suis d'accord, mais ce que je ne m'explique pas, c'est pourquoi le temps de traitement a doublé pratiquement du jour au lendemain, alors que les volumes à traiter sont identiques et que rien n'a été modifié au niveau des serveurs.
    Si la table grossit le DELETE est de plus en plus long. Vérifie les stats et surtout l'indexation

    Citation Envoyé par fulub Voir le message
    J'avais mis en place le direct path pour le sqlldr, mais le problème est qu'il écrit toujours au dessus de la marque, ce qui fait que le tablespace grossit de façon conséquente et qu'il faut réinitialiser la base pour récupérer l'espace perdu (sauf erreur de ma part).
    Pourquoi ne pas faire le SQLLDR dans une autre table que tu peux tronquée avant (et donc libéré les blocs) ? En plus, ça permettrait de paralléliser les 2 taches chargement et delete

    Citation Envoyé par Waldar Voir le message
    Le vase a fini par déborder quelque part.
    De mon côté - développeur ETL, jamais je ne me permettrai de livrer un traitement qui dure 5h pour gérer 3.5 millions de lignes.
    C'est un peu la honte quand même.
    Parfois on est tributaire des contraintes applicatives, c'est pas toujours évident de faire dans des délais raisonnables. Il n'y a rien d'honteux là-dedans

Discussions similaires

  1. [MySQL] alimentation d'une base mysql à partir d'une autre base
    Par sousoujda2 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 08/08/2008, 17h05
  2. Formulaire alimenté par une base de données
    Par claire13 dans le forum Langage
    Réponses: 5
    Dernier message: 25/10/2007, 10h31
  3. [AJAX] lier deux listes déroulantes alimenté par une base de données (Mysql)
    Par arnaudperfect dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/04/2007, 01h06
  4. Réponses: 1
    Dernier message: 20/03/2007, 09h24
  5. Lenteur de lecture d'une base Interbase
    Par Moustache dans le forum InterBase
    Réponses: 2
    Dernier message: 08/09/2006, 10h25

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