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!