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 :

Optimisation de la base


Sujet :

Administration Oracle

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2014
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Février 2014
    Messages : 105
    Points : 57
    Points
    57
    Par défaut Optimisation de la base
    Bonjour
    Je souhaite optimiser ma base Oracle, j'ai fais quelques essais sur une base test, pour le moment infructueux ...

    Voici quelques uns de mes paramètres actuel :

    processes 400
    open_cursors 300
    sessions 622
    transactions 684
    optimizer_index_caching 25


    Qu'en pensez-vous ?
    merci

  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
    Avez-vous essayé alter system set fast = true; ?

    C'est une plaisanterie bien entendu, mais c'est quelque part ce que vous cherchez à faire.
    En effet, votre message donne l'impression que vous prenez le problème dans le mauvais sens.
    Vous essayez des commandes et "ça n'optimise pas".

    Pour améliorer une base, il faut commencer par lister les problèmes concrets, relever des métriques, regarder ce qui peut influer sur ces métriques : optimisation, réécriture de code, changement de matériel, paramétrage.
    On évalue la charge (cinq jours de réécriture pour gagner une minute sur un traitement qui dure une heure n'est pas rentable), on se le fait valider et enfin on y va.

    Avec cette méthode, on obtient des résultats.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2014
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Février 2014
    Messages : 105
    Points : 57
    Points
    57
    Par défaut
    Alors un problème concret, j'en ai un, un de mes traitements prenait 2 heures environ, il en prend 5/6h aujourd'hui, depuis migration de version de base sur une machine plus puissante.

  4. #4
    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
    Citation Envoyé par Arkyano Voir le message
    Alors un problème concret, j'en ai un, un de mes traitements prenait 2 heures environ, il en prend 5/6h aujourd'hui, depuis migration de version de base sur une machine plus puissante.
    Activez une trace SQ étendue et analyser le fichier de trace ainsi obtenu.

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2014
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Février 2014
    Messages : 105
    Points : 57
    Points
    57
    Par défaut
    Bonjour
    J'ai maintenant une trace (énorme) avec les requête sql exécutées.

  6. #6
    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
    Passez votre fichier de trace avec l'utilitaire tkprof :
    http://oracle.developpez.com/guide/tuning/tkprof/

  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
    Ou vous pouvez employer un utilitaire de type profiler comme Tvd$xtat ou similaire pour mieux comprendre ce qui se passe pendant le traitement.

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2014
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Février 2014
    Messages : 105
    Points : 57
    Points
    57
    Par défaut
    Bonjour

    donc, à ce que je peux voir, la plus grosse requête dure en temps CPU, 60 secondes et en Elapsed, 62 secondes sur un nombre de Parse/execute/fetch de plus de 17000,
    toutes les autres requêtes ne durent même pas 1 seconde, mais sont par contre très nombreuses.

  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
    Vous nous avez dit que votre traitement prends 5 à 6 heures. Vous avez activé la trace SQL sur disons 1 heure de traitement. Sur cette heure de traitement combiens de temps le fichier de trace permet d'expliquer ?
    Deuxième question la requête parsée et exécutée 17000 fois prends 62 secondes de temps écoulés au total ? Comment avez vous triée votre fichier trace ?
    Et troisième: pourriez-vous comparer la trace sur la nouvelle machine et sur l'ancienne ? Quelles sont les différences ?

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2014
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Février 2014
    Messages : 105
    Points : 57
    Points
    57
    Par défaut
    La trace contient la totalité des 5/6h de traitement.
    62 secondes, c'est effectivement sur le total de la requête, après être passé par tkprof, j'ai fait une recherche sur "total", et j'ai pu ainsi récupérer chaque ligne, contenant les durées, ...
    Pour comparer avec l'ancienne version, ça va être assez délicat, mais peut-être faisable.

  11. #11
    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
    Si vous avez une trace de 5 heures l'outil de type profiler que je vous aie indiqué permet de comprendre où le temps passe c'est-à-dire comment ces 5 heures se reparties entre divers actions dans la base que le fichier de trace contient.

    Mais sans employer l'artillerie lourde avez vous généré le fichier de trace avec tri par execpu (sort=execpu) ? Si oui pouvez vous poster juste les informations concernant la requête qui arrivent en première position avec cette option ?

    Sinon dans la cas où toutes vos requêtes s'exécutent "super-vite" vous avez peut-être un traitement de type ligne à ligne avec des requêtes contenant des littéraux en dur au lieu d'utiliser des variables de liaison (bind variables).

  12. #12
    Membre confirmé
    Homme Profil pro
    xxxxxxxxx
    Inscrit en
    Avril 2015
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : xxxxxxxxx

    Informations forums :
    Inscription : Avril 2015
    Messages : 394
    Points : 552
    Points
    552
    Par défaut tuning_SQL
    Je vois que vous avez du mal à analyser la requête tracée, mais il faut générer le rapport avec l'utilitaire TKPROF, et ne pas inclure les activités de sys=no, afin de cibler votre analyse sur les evenements d'attentes .
    Une autre alternative, c'est encore plus rapide et plus comprehensible :
    créer une task avec dbms_sqltune.create_tuning_task, en passant la requête problematique
    en suite éxécute le task, puis générer le rapport toujours avec le package dbms_sqltune ,
    Et là, vous aurez probablement des recommendations avec les plans d'execution origine et nouveau,
    eventuellement un profil SQL , etc ..
    Cordialement !

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/08/2007, 13h19
  2. [phpBB] Question concernant l'optimisation d'une base de données MySql
    Par Evocatii dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 24/06/2007, 11h47
  3. Optimisation de sa base
    Par masseur dans le forum Schéma
    Réponses: 3
    Dernier message: 26/10/2006, 17h31
  4. Optimisation d'une base avec des tables liés
    Par snoopy69 dans le forum Access
    Réponses: 2
    Dernier message: 28/04/2006, 09h11
  5. optimisation requetes avec base de données
    Par flogreg dans le forum Décisions SGBD
    Réponses: 9
    Dernier message: 05/07/2005, 14h54

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