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

Oracle Discussion :

Tracer toutes les requêtes exécutées par un utilisateur


Sujet :

Oracle

  1. #21
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    on peut dire que c'est la même, seulement avec l'event 10046 on peut choisir des niveaux

  2. #22
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    L'audit via Fine Grained Auditing ne recupere le sqltext qu'en 10g!
    pour moi pour tracer un seul utilisateur en 9i seul ta methode via trigger after logon me parait bonne.
    A+

  3. #23
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 2
    Points
    2
    Par défaut
    Ok merci pour les infos sur les niveaux de trace et pour l'audit...

    orafrance tu entends quoi par RAC ?

  4. #24
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    RAC c'est une version d'Oracle pour la clusterisation

  5. #25
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    oui il est valide et il ne plante qu'avec WEBDFE...
    Et si tu donnes directement le privilège ALTER SESSION à ton user ? Ca marche ?


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  6. #26
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 2
    Points
    2
    Par défaut
    Ben enfait le user WEBDFE a la base avait les memes droits que le compte sysdba... Pour verifier que le probleme ne vient pas de la, je lui ai rajoute les memes droits que le SYS, et cela ne fonctionne tjs pas...

    Je voulais essayer de creer le trigger depuis le compte SYS mais malheureusement le DBA est parti en vacances sans nous laisser le mot de passe ;(

    A ce propos, ya-t-il une procedure de password recovery ?!
    J'ai essaye de changer le mot de passe depuis le compte system avec la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ALTER USER SYS IDENTIFIED BY monpassword
    La commande fonctionne apparement mais lors de la tentative de connection en SYS, il me dit que je n'ai pas les privileges necessaires.
    De meme, en utilisant OEM...

  7. #27
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Le rôle SYSDBA n'est peut être pas activé durant l'exécution du trigger et peut être que ton user n'arrive pas à faire le alter session.

    Essaie, en étant connecté sous WEBDFE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    grant alter session to WEBDFE;
    Et reconnectes toi pour voir si le fichier de trace est correct cette fois ci.

    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  8. #28
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    il y a de nombreux messages à ce sujet dans le forum

    lalystar donne une excellente piste, en PL/SQL le rôle est ignoré au profit des GRANT... il faut donc avec spécifiquement le privilége et non pas seulement le rôle qui l'inclus

  9. #29
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 2
    Points
    2
    Par défaut
    ok je viens de tester mais ya tjs un pb

    le grant fonctionne et voici le fichier de trace :

    .trc
    Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.4.0 - Production
    ORACLE_HOME =
    System name: AIX
    Node name:
    Release: 2
    Version: 5
    Machine:
    Instance name:
    Redo thread mounted by this instance: 1
    Oracle process number: 10
    Unix process pid: 905338, image: oracle@leo (TNS V1-V3)

    *** SESSION ID10.8037) 2005-03-11 14:09:58.119
    Skipped error 4098 during the execution of WEBDFE.TRIGGER_WEBDFE
    *** 2005-03-11 14:09:58.133
    ksedmp: internal or fatal error
    ORA-04098: wyzwalacz 'WEBDFE.TRIGGER_WEBDFE' jest niepoprawny; ponowne sprawdzenie poprawno¶ci nie powiodło się

  10. #30
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Ne comprenant pas parfaitement le polonais :

    ORA-04098: trigger 'string.string' is invalid and failed re-validation
    Cause: A trigger was attempted to be retrieved for execution and was found to be invalid. This also means that compilation/authorization failed for the trigger.
    Action: Options are to resolve the compilation/authorization errors, disable the trigger, or drop the trigger.
    Tu es sûr que ton trigger compile ?

    Tu peux faire le create trigger et un show err sous SQL*Plus ?


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  11. #31
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 2
    Points
    2
    Par défaut
    SQL> Create or replace trigger trigger_webdfe AFTER LOGON ON database
    2 begin
    3 if user = 'WEBDFE' THEN
    4 execute immediate 'alter session set sql_trace = true';
    5 end if;
    6 end;
    7 /

    Wyzwalacz zosta³ utworzony.

    SQL> show errors
    Nie ma b³êdów.
    Ce qui signifie : il n'y a pas d'erreurs [/code]

  12. #32
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Tu peux mettre en commentaire le execute immediate pour voir si le pb vient de là ou du trigger ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Create or replace trigger trigger_webdfe AFTER LOGON ON database 
    begin 
       if user = 'WEBDFE' THEN 
          --execute immediate 'alter session set sql_trace = true'; 
          null;
       end if; 
    end; 
    /

    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  13. #33
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 2
    Points
    2
    Par défaut
    SQL> Create or replace trigger trigger_webdfe AFTER LOGON ON database
    2 begin
    3 if user = 'WEBDFE' THEN
    4 --execute immediate 'alter session set sql_trace = true';
    5 null;
    6 end if;
    7 end;
    8 /

    Wyzwalacz zosta³ utworzony.

    SQL> show errors
    Nie ma b³êdów.
    idem no pb

    je suis en train de mettre en oeuvre la solution ultime, foutre toute la base en trace mais j'aimerai bien trouver d'ou provient le pb

  14. #34
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Oui mais dans ce cas as tu un fichier de trace indiquant une erreur ?


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  15. #35
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    je ne comprend pas le polonais mais ta varaible user d'ou sort elle
    moi je recupere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    declare user varchar2(30);
    select sys_context('userenv','session_user')
            into   User
            from dual;
    pour recuperer le user de connexion

  16. #36
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 2
    Points
    2
    Par défaut
    ben je n'ai pas de fichier de trace puisque la commande demandant la creation de celui-ci n'est pas executée...

    sinon j'ai lancé toute la base en mode trace...
    alors c'est bien ca trace (sans mauvais jeu de mot )
    mais il y a creation d'un fichier trace pour chaque nouvelle session. l'appli dont je souhaite monitorer les requetes, utilise une nouvelle session pour chaque requete. je me retrouve donc avec une trippotée de fichiers distincts mais bon c'est mieux que rien!

  17. #37
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 2
    Points
    2
    Par défaut
    boyardeC,

    le user WEBDFE, c'est moi qui l'ai crée et qui force l'appli a l'utiliser pour tracer les requetes

  18. #38
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    OK mais, ma remarque conserne la varaible user dans ton script .
    j'aurais ecrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     Create or replace trigger trigger_webdfe AFTER LOGON ON database 
    declare user varchar2(30); 
    begin 
     if user = 'WEBDFE' THEN 
     --execute immediate 'alter session set sql_trace = true'; 
     null; 
     end if; 
     end;
    peux tu essayer?

  19. #39
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Citation Envoyé par scop
    ben je n'ai pas de fichier de trace puisque la commande demandant la creation de celui-ci n'est pas executée...
    Je pensais que c'était le trigger qui plantait et générait un fichier de trace, c'est ce que je voulais vérifier mais apparemment ce n'est pas le cas.

    USER est une pseudo colonne qui renvoie le nom de l'user connecté. Je crois que c'est exactement la même chose que tu indiques avec SYS_CONTEXT.


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  20. #40
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 2
    Points
    2
    Par défaut
    boyardeC ta piste était la bonne, j'ai enfin reussi !

    dans ce que tu a ecris, tu initialise la variable user mais oublie ensuite de la remplir avec la requete que tu m'a donné prédemment. Et de toute facon, le alter session est en commentaire donc il ne se passe strictement rien Mais cela allait clairement dans le bon sens!
    J'ai pas mal galéré mais j'en ai appris aussi pas mal sur le fonctionnement d'Oracle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Create or replace trigger trigger_webdfe AFTER LOGON ON database 
    declare user varchar2(30); 
    begin
    select sys_context('userenv','session_user')into User from dual;  
     if user = 'WEBDFE' THEN 
     execute immediate 'alter session set sql_trace = true'; 
     null; 
     end if; 
     end;
    avec cela, tout marche tres bien, le fichier de trace est completé correctement!

    UN GRAND MERCI A TOUS POUR VOTRE AIDE ET VOTRE COMPREHENSION !

    (juste pour la ptite histoire, j'ai posté sur plusieurs forum (dont OTN) et jdois dire que ya pas plus actif et efficace que ce forum francophone )
    l'autosatisfaction entre francais ca fait du bien parfois lollll

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/03/2014, 10h51
  2. Réponses: 4
    Dernier message: 30/07/2012, 15h15
  3. Tracer les requêtes exécutées dans un script PL/SQL
    Par awalter1 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 30/09/2011, 17h57
  4. Réponses: 2
    Dernier message: 08/02/2010, 10h41
  5. Tracer les requêtes exécutées par une fonction PL/PgSQL
    Par scheu dans le forum Administration
    Réponses: 1
    Dernier message: 02/02/2009, 14h01

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