2008-10-30 8 views
4

Nous cherchons un moyen de consigner tout appel aux procédures stockées dans Oracle, et voir quelles valeurs de paramètres ont été utilisées pour l'appel.Comment enregistrer/suivre les appels de procédure stockée Oracle avec des valeurs de paramètre?

Nous utilisons Oracle 10.2.0.1

Nous pouvons connecter des instructions SQL et voir les variables liées, mais lorsque nous suivons les procédures stockées voir les variables nous lient B1, B2, etc., mais pas de valeurs.

Nous aimerions voir le même type d'informations que celles que nous avons vues dans MS SQL Server Profiler.

Merci pour toute aide

Répondre

6

Vous pouvez jeter un oeil à la DBMS_APPLICATION_INFO package. Cela vous permet d '"instrument" votre code PL/SQL avec n'importe quelle information que vous voulez - mais cela implique d'ajouter des appels à chaque procédure à instrumenter.

Voir aussi this AskTom thread sur l'utilisation de DBMS_APPLICATION_INFO pour surveiller PL/SQL.

2

Je pense que vous utilisez le mot "log" d'une manière étrange.

Nous pouvons connecter des instructions SQL ...

Voulez-vous dire vraiment dire que vous pouvez suivre des instructions SQL avec variables de liaison? La réponse de Tony est dirigée vers la capacité de LOGER ce que vous faites. Ceci est toujours supérieur au traçage parce que vous seul savez ce qui est important pour vous. Peut-être que l'exécution de votre processus dépend fortement de l'interrogation d'une valeur à partir d'une table. Étant donné que cette valeur change et qu'elle n'est pas transmise en tant que paramètre, vous pouvez perdre cette information.

Mais si vous enregistrez ce que vous faites, vous pouvez inclure cette valeur dans votre table de journal et vous connaîtrez non seulement les variables que vous avez transmises mais aussi la valeur de la clé.

modifier le contexte de nom de trace 10046 des événements d'ensemble de système, niveau 12 '; Est-ce que c'est ce que vous utilisiez?

0

Oui, je pense que je devrais avoir utilisé le terme « trace »

Je vais essayer de décrire ce que nous avons fait:

Utilisation du gestionnaire de l'entreprise (comme dbo), nous sommes passés à une session, et a commencé une trace

trace début Activer attente d'informations, se lier d'info

Exécuter une opération sur notre application qui frappe le DB

Terminez la trace, exécutez la sortie:

tkprof Prc output2.txt sys = pas d'enregistrement = record.txt explain = dbo @ DBINST/PW

Ce que nous vouloir voir est, " ces procédures ont été appelés avec ces paramètres » ce que nous obtenons est:

Begin dbo.UPKG_PACKAGENAME.PROC(:v0, :v1, :v2 ...); End; 
/
Begin dbo.UPKG_PACKAGENAME.PROC2(:v0, :v1, :v2 ...); End; 
/
... 

on peut donc suivre les procédures qui ont été appelés, mais nous ne sommes pas les valeurs des paramètres réels, juste le: v0, etc.Je comprends que ce que nous avons fait est le même que l'instruction alter system, mais s'il vous plaît laissez-nous savoir si ce n'est pas le cas.

Merci

0

vous utilisez 10g laisser essayer cette exec dbms_monitor.session_trace_enable (session_id => xxx, serial_num => xx, attend => true, se fixe => true); vous pouvez obtenir session_id = SID & serial_num = SERIAL # à partir de v $ session

Questions connexes