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

Oracle Discussion :

Explain Plan sous SQL developer


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 12
    Points : 15
    Points
    15
    Par défaut Explain Plan sous SQL developer
    Bonjour,

    dernièrement, je travail sur un package plsql dont la procédure principale dure environ 5 minutes, mon chef de projet me demande de lui sortir un explain plan comme sur toad, mais comme je suis sur sql developer, je n'ai pas du tout la même chose.

    Quelqu'un peut me dire ou trouver svp ?

    Merci d'avance !

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Utilisez les outils Oracle pour sortir la version texte, qui est la plus lisible (et qui vous fait maudire les plan d'exécutions sur les autres SGBD, mais passons).

    Il y a plusieurs méthodes donc je ne suis pas exhaustif.

    Plan d'exécution estimé (la requête n'est pas exécutée) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    explain plan for
    select ...;
     
    SELECT * FROM TABLE(dbms_xplan.display);
    Plan d'exécution réel (la requête est exécutée) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select /*+ gather_plan_statistics */  ...;
     
    SELECT * FROM TABLE(dbms_xplan.display_cursor(NULL,NULL,'ALLSTATS LAST'));
    Il vous faut par contre quelques privilèges de lecture sur certaines vues systèmes.

  3. #3
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Points : 8 079
    Points
    8 079
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Utilisez les outils Oracle pour sortir la version texte, qui est la plus lisible...
    Oui, sauf par les êtres humains !

    La lisibilité des plans d'exécution est scandaleusement lamentable.
    C'est pourquoi certains individus bien inspirés se tournent vers une visualisation graphique, comme ici :
    http://iggyfernandez.wordpress.com/2...-me-a-picture/

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Entre :
    http://iggyfernandez.files.wordpress...plain_plan.jpg
    Et :
    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
    --------------------------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation                    | Name     | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers | Reads  |
    --------------------------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT             |          |      1 |        |       |   795 (100)|          |      1 |00:00:03.06 |    2880 |   2393 |
    |   1 |  SORT AGGREGATE              |          |      1 |      1 |   144 |            |          |      1 |00:00:03.06 |    2880 |   2393 |
    |*  2 |   HASH JOIN RIGHT OUTER      |          |      1 |   2783 |   391K|   795   (2)| 00:00:10 |   2781 |00:00:03.06 |    2880 |   2393 |
    |   3 |    INDEX FULL SCAN           | I_USER2  |      1 |     94 |   376 |     1   (0)| 00:00:01 |     94 |00:00:00.01 |       1 |      0 |
    |*  4 |    HASH JOIN OUTER           |          |      1 |   2783 |   380K|   794   (2)| 00:00:10 |   2781 |00:00:03.03 |    2879 |   2393 |
    |*  5 |     HASH JOIN                |          |      1 |   2783 |   358K|   735   (2)| 00:00:09 |   2781 |00:00:02.39 |    2665 |   2393 |
    |   6 |      INDEX FULL SCAN         | I_USER2  |      1 |     94 |   376 |     1   (0)| 00:00:01 |     94 |00:00:00.01 |       1 |      0 |
    |*  7 |      HASH JOIN               |          |      1 |   2783 |   347K|   733   (1)| 00:00:09 |   2781 |00:00:02.36 |    2664 |   2393 |
    |*  8 |       HASH JOIN OUTER        |          |      1 |   2783 |   317K|   482   (1)| 00:00:06 |   2783 |00:00:01.55 |    1756 |   1487 |
    |*  9 |        HASH JOIN RIGHT OUTER |          |      1 |   2783 |   304K|   423   (1)| 00:00:06 |   2783 |00:00:00.75 |    1542 |   1359 |
    |  10 |         TABLE ACCESS FULL    | SEG$     |      1 |   5695 | 62645 |    47   (0)| 00:00:01 |   5735 |00:00:00.02 |     171 |      0 |
    |* 11 |         HASH JOIN            |          |      1 |   2783 |   274K|   376   (1)| 00:00:05 |   2783 |00:00:00.66 |    1371 |   1359 |
    |  12 |          MERGE JOIN CARTESIAN|          |      1 |      7 |   497 |     5  (20)| 00:00:01 |      7 |00:00:00.03 |       9 |      0 |
    |* 13 |           HASH JOIN          |          |      1 |      1 |    68 |     1 (100)| 00:00:01 |      1 |00:00:00.03 |       0 |      0 |
    |* 14 |            FIXED TABLE FULL  | X$KSPPI  |      1 |      1 |    55 |     0   (0)|          |      1 |00:00:00.01 |       0 |      0 |
    |  15 |            FIXED TABLE FULL  | X$KSPPCV |      1 |    100 |  1300 |     0   (0)|          |   2394 |00:00:00.01 |       0 |      0 |
    |  16 |           BUFFER SORT        |          |      1 |      7 |    21 |     5  (20)| 00:00:01 |      7 |00:00:00.01 |       9 |      0 |
    |  17 |            TABLE ACCESS FULL | TS$      |      1 |      7 |    21 |     4   (0)| 00:00:01 |      7 |00:00:00.01 |       9 |      0 |
    |* 18 |          TABLE ACCESS FULL   | TAB$     |      1 |   2783 | 83490 |   371   (1)| 00:00:05 |   2783 |00:00:00.60 |    1362 |   1359 |
    |  19 |        INDEX FAST FULL SCAN  | I_OBJ1   |      1 |  73373 |   358K|    58   (0)| 00:00:01 |  73418 |00:00:00.30 |     214 |    128 |
    |* 20 |       TABLE ACCESS FULL      | OBJ$     |      1 |  73373 |   788K|   250   (2)| 00:00:03 |  73416 |00:00:00.26 |     908 |    906 |
    |  21 |     INDEX FAST FULL SCAN     | I_OBJ1   |      1 |  73373 |   573K|    58   (0)| 00:00:01 |  73418 |00:00:00.16 |     214 |      0 |
    --------------------------------------------------------------------------------------------------------------------------------------------
    Mon choix est vite vu.

    Liens issus de :
    http://iggyfernandez.wordpress.com/2...sing-pictures/

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 12
    Points : 15
    Points
    15
    Par défaut
    Merci Waldar, ça fonctionne, par contre j'ai un nouveau problème (et oui toujours un) :

    j'ai une procédure qui insère des données d'une table à une autre, rien de bien sorcier, et qui fonctionne très bien sous sql developer, toutefois qui retourne une erreur sous le toad de mon chef de projet : ORA-01722: Nombre non valide. Celon lui, le problème vient de la conversion des chaînes de caractères en nombres décimaux (la virgule serait mal traduit par toad), toutefois comme ça fonctionne de mon coté, j'aimerais trouvé un moyen que ça fonctionne sur les deux systèmes.

    Merci d'avance !!

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Il faut ouvrir un nouveau sujet pour ce nouveau besoin.
    Mais en gros votre CP a raison, pour lever toute ambiguïté il suffit de ne pas faire de conversion implicite.

    Si vous avez '3,5' pour 3.5, utilisez la fonction to_number avec un format et le paramètre nls_numeric_characters.

Discussions similaires

  1. Procédure stockée sous SQL Developer
    Par mamdaoud dans le forum PL/SQL
    Réponses: 2
    Dernier message: 19/08/2014, 17h55
  2. Rafraîchissement des tables sous SQL Developer
    Par cobar520 dans le forum Sql Developer
    Réponses: 0
    Dernier message: 31/07/2011, 20h10
  3. EXECUTE IMMEDIATE et Compilation sous Oracle Sql Developer
    Par abdelhamidem dans le forum PL/SQL
    Réponses: 3
    Dernier message: 16/09/2008, 17h01
  4. SQL Developer: Colonnes dans Explain Plan
    Par Jean_Benoit dans le forum SQL
    Réponses: 2
    Dernier message: 16/08/2007, 09h38
  5. [debutant]Plan de maintenance sous sql serveur 2000
    Par christophebmx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/05/2005, 12h18

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