2017-06-01 2 views
0

Je suis face à un petit problème, je & besoin de votre aide si vous avez le temps de le faire, S'il vous plaît :)Trace toute l'activité d'une session oracle

Je suis en train d'installer une sorte de vérification de retracer ALL SQL STATEMENTS exécuté par certaines sessions spécifiques.

J'ai donc créé un déclencheur AFTER LOGON qui active un événement de trace (10046 (tous les niveaux testés) ou utilise DBMS_MONITOR) pour ces sessions.

Le script me donne le bon résultat, mais en plus, il remplit la trace avec beaucoup de statistiques & de requêtes internes oracle, donc je suppose qu'il aura un impact sur la performance de base de données & prendra trop de l'espace disque.

Existe-t-il un moyen de collecter uniquement des requêtes utilisateur? Peut-être une trace spécifique peut me permettre de faire cela?

Merci pour vos suggestions :)

Répondre

1

Filtrage des requêtes récursives sur le fichier de trace par le formatage du fichier avec tkprof en utilisant le drapeau sys=no:

tkprof input_file.trc output_file.txt sys=no 

Le fichier de sortie doit être plus petit et plus facile à lire que le fichier de trace d'origine. Le fichier inclura probablement toujours des instructions qui ne vous intéressent pas, telles que les déclencheurs Spatial/SDO. Mais la plupart des déclarations en coulisse seront exclues.

Pour ne voir les requêtes exécutées dans la session, et ne comprennent pas toutes les statistiques et les requêtes internes, utilisez le drapeau record pour générer un fichier séparé:

tkprof input_file.trc output_file.tk sys=no record=record.txt 
+0

Merci! La sortie est meilleure :) Est-il possible de supprimer des statistiques ou de supprimer des requêtes internes? – DBAMan