2010-07-05 5 views
3

Comment acquérir l'instruction SQL complète avec des variables de liaison substituées à partir d'un fichier de trace?Trace SQL Oracle avec variables de liaison

Lors de la configuration

ALTER SESSION SET EVENTS '10046 trace name context forever, level 4'; 
ALTER SESSION SET sql_trace = true; 

le fichier de trace résultant contient la requête SQL avec des variables de liaison et la résolution des variables de liaison dans une section « lie » distincte. C'est bien s'il y a quelques variables de liaison. Ce n'est pas très utile quand j'ai plus de 100 variables de liaison. Tkprof traite le fichier de trace mais ne prend pas en charge les variables de liaison.

Est-il possible d'obtenir les instructions SQL complètes avec les variables de liaison substituées afin que je puisse facilement copier-coller et ré-exécuter? Y at-il peut-être un outil gratuit qui traitera mon fichier de trace et affichera les instructions SQL complètes?

J'apprécierais aussi une solution sans trace SQL en utilisant v $ sql et des amis à la place.

+0

Plus de 100 variables de liaison ?! –

+0

Oui, je sais, 100 + variables de liaison est fou, ne me lancez pas dessus. C'est une table géante et le SQL réel est une instruction d'insertion générée par hibernate. – gabor

Répondre

3

Vous devez utiliser Oracle trace analyser à la place de tkprof pour extraire les valeurs réelles des variables de liaison.

l'analyseur de traces va bientôt remplacer tkprof.

+0

Je ne connaissais pas l'analyseur de traces. +1, car c'est un outil sympa et cela m'amène à aller plus loin, car il liste les valeurs réelles des variables de rattachement d'une manière plus accessible. Mais les variables de liaison sont toujours dans une section distincte, non substituée dans l'instruction SQL. Autrement dit, la ré-exécution de l'instruction SQL nécessiterait de substituer les variables de liaison à la main. – gabor