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

SQL Oracle Discussion :

[Oracle 9.2] comment connaître l'outline utilisée par une requête?


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Points : 20
    Points
    20
    Par défaut [Oracle 9.2] comment connaître l'outline utilisée par une requête?
    Bonjour,


    Je souhaite connaître pour Oracle 9.2 quelles sont les outlines employées parmis les requêtes qui sont exécutées. Sans tracer les sessions des utilisateurs.

    Dans un premier temps je peux voir avec la requête suivante quelles sont celles qui ont été au moins une fois utilisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM USER_OUTLINES WHERE USED = 'USED' ORDER BY NAME;
    Puis en regardant dans la vue V$SQL, je peux découvrir quelles catégories d'outlines ont été utilisés ces derniers temps par les requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT
        OUTLINE_CATEGORY, HASH_VALUE, PLAN_HASH_VALUE, FIRST_LOAD_TIME, SQL_TEXT
    FROM
        V$SQL
    WHERE
        OUTLINE_CATEGORY IS NOT NULL;
    Comment faire pour avoir le nom exact de l'outline employée par une requête en particulier? Est-ce possible en joignant la table USER_OUTLINES et la vue V$SQL?

    J'ai essayé sans succès avec le champ HASH_VALUE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT
        A.OUTLINE_CATEGORY, B.OL_NAME, B.SQL_TEXT
    FROM
        V$SQL A
        INNER JOIN OUTLN.OL$ B ON A.HASH_VALUE = B.HASH_VALUE;
    Peut être en joignant les deux objets avec les champs SQL_TEXT? Mais l'un est de type LONG l'autre VACHAR(2)... Avez-vous une autre piste?


    Merci!

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Points : 20
    Points
    20
    Par défaut complément sur TKPROF
    Dans un environnement de tests, j'ai créé une outline. J'active le traçage et exécute la requête qui l'utilise. Je constate alors que ça a bien été le cas car DBA_OUTLINES.USED est passé à "USED". Par contre je ne vois rien avec TKPROF et l'option EXPLAIN.

    Donc la seule façon de savoir si une outline est employée est de réinitialiser DBA_OUTLINES.USED à "UNUSED" (enfin OUTLN.OL$.FLAGS à 0) puis d'exécuter un traitement? Puis de fouiller dans la trace pour tenter d'isoler la requête?

  3. #3
    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
    Il n'est pas trés clair pour moi ce que vous cherchez.
    La liste des outlines utilisés vous savez le faire.
    Pour une requête donnée, mieux dit existante dans v$SQL, la zone outline category indique l'outline utilisé.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Points : 20
    Points
    20
    Par défaut en plus clair
    Je cherche à savoir pour une requête quel est le nom de l'outline qu'elle a utilisée en plus de sa catégorie.

  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
    Utilisez la signature.
    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
     
    mni@DIANA> variable sign varchar2(100);
    mni@DIANA> exec DBMS_OUTLN_edit.GENERATE_SIGNATURE('SELECT e.first_name, e.last_name, d.department_name FROM hr.employees e, hr.departments d WHERE e.department_id = d.department_id',:sign);
     
    ProcÚdure PL/SQL terminÚe avec succÞs.
     
    mni@DIANA> print sign
     
    SIGN
    ----------------------------------------------------------------------------------------------------------
    39AF2CBA8E018F5ADFBA97BF082ABAB8
     
    mni@DIANA> select name, category from user_outlines where signature = :sign;
     
    NAME                           CATEGORY
    ------------------------------ ------------------------------
    EMP_TEST                       TEST

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Points : 20
    Points
    20
    Par défaut
    C'est tout à fait ce que je voulais, merci!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/01/2012, 09h06
  2. Comment connaître les technologies utilisées par un site?
    Par estmars dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 22/07/2011, 16h43
  3. Réponses: 2
    Dernier message: 01/10/2009, 11h00
  4. Comment connaître la mémoire utilisée par un processus ?
    Par David dans le forum API, COM et SDKs
    Réponses: 11
    Dernier message: 17/01/2008, 15h01
  5. comment connaitre la memoire utilisée par une appli?
    Par afrikha dans le forum Autres Logiciels
    Réponses: 11
    Dernier message: 19/11/2005, 21h24

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