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

SQL Oracle Discussion :

Connaîtres les requêtes d'un utilisateur


Sujet :

SQL Oracle

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 68
    Par défaut Connaîtres les requêtes d'un utilisateur
    Bonjour,

    J"utilise un petit logiciel simple mais "boite noire" qui se connecte à une grande base oracle pour afficher des relevés de mesure. Seulement il marque un message d'erreur comme quoi la vue ou la table est inexistante, alors qu'a priori la table est présente.

    La seule chose dont je sois sur c'est l'utilisateur sous lequel le logiciel se connecte pour faire ses requêtes, je me demandais s'il existait un moyen de voir les actions effecutés par cet utilisateur sur la base, pour trouver la requête effectuée parce que la je n'ai que le message d'erreur.


    A votre avis une telle action est elle possible?

    Merci
    J.

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Tu regardes les sessions oracle (v$session) et tu traces la session de cet utilisateur.

    Sinon, ce code simple, mais pas exhaustif.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM v$open_cursor
    WHERE SID = n°id_trouvé_par_v$session

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 68
    Par défaut
    merci pour ta réponse , pourrais-tu juste expliciter un peu plus:

    Tu regardes les sessions oracle (v$session) et tu traces la session de cet utilisateur.
    je suis débutant, désolé.

    MErci

  4. #4
    Expert confirmé
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Par défaut
    Si tu as TOAD tu as un menu qui te permet d'afficher toutes les requêtes appelées.

    Ce menu appelle en fait une requête qui utilise notamment la vue système v$session. Il faut donc avoir les droits sur les vues systèmes ce qui n'est pas toujours le cas.

    edit:
    C'est cette requête qui est appelée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    SELECT   /*+ choose */
             s.status "Status", s.serial# "Serial#", s.TYPE "Type",
             s.username "DB User", s.osuser "Client User", s.server "Server",
             s.machine "Machine", s.module "Module", s.terminal "Terminal",
             s.program "Program", p.program "O.S. Program",
             s.logon_time "Connect Time", lockwait "Lock Wait",
             si.physical_reads "Physical Reads", si.block_gets "Block Gets",
             si.consistent_gets "Consistent Gets",
             si.block_changes "Block Changes",
             si.consistent_changes "Consistent Changes", s.process "Process",
             p.spid, p.pid, si.sid, s.sql_address "Address",
             s.sql_hash_value "Sql Hash", s.action
        FROM v$session s, v$process p, sys.v_$sess_io si
       WHERE s.paddr = p.addr(+)
         AND si.sid(+) = s.sid
         AND (s.username IS NOT NULL)
         AND (NVL (s.osuser, 'x') <> 'SYSTEM')
         AND (s.TYPE <> 'BACKGROUND')
    ORDER BY 3

  5. #5
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par jacques64 Voir le message
    merci pour ta réponse , pourrais-tu juste expliciter un peu plus:
    Tu regardes les sessions oracle (v$session) et tu traces la session de cet utilisateur.
    je suis débutant, désolé.

    MErci

    Voici un lien de la FAQ :
    http://oracle.developpez.com/faq/?page=3-2#trace

  6. #6
    Membre éclairé Avatar de LBO72
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Par défaut
    McM
    Sinon, ce code simple, mais pas exhaustif.

    Code :
    SELECT *
    FROM v$open_cursor
    WHERE SID = n°id_trouvé_par_v$session
    J'ai essayé d'utiliser ta requête, mais elle me sort la dernière exécutée, en l'occurrence : SELECT * FROM v$open_cursor WHERE SID = XXX

    LBO72.

  7. #7
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    C'est normal, ce sont les curseurs ouverts.
    Forms par exemple ouvre 1 curseur par bloc basé (et pour les procédures, je ne sais pas).
    Sous TOAD, si tu ouvres 2 fenêtres sql, tu auras les 2 requetes.

    Comme je l'ai dit, ce n'est pas une requête exhaustive. Ca peut donner des infos rapides.

  8. #8
    Expert confirmé
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Par défaut
    Citation Envoyé par McM Voir le message
    le lien suivant qui est dans la FAQ est mort (erreur 404) Developpez.com: Différentes façon de tracer l'activité de sessions

  9. #9
    Membre éclairé Avatar de LBO72
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Par défaut
    le lien suivant qui est dans la FAQ est mort (erreur 404) Developpez.com: Différentes façon de tracer l'activité de sessions
    Messieurs les rédacteurs avez-vous la possiblité d'activer ce lien ?

    Merci.
    LBO72.

  10. #10
    Expert confirmé
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Par défaut
    sinon tu as essayé la requête que je t'ai passé ?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 137
    Par défaut
    Bonsoir,

    select sql_text,first_load_time
    fromv$sqlarea
    order by first_load_time desc

    elle te donne toutes les requetes executées depuis le demarrage de la base

  12. #12
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Attention, le shared pool est un cache qui contient les formes compilées du SQL et PL/SQL: il n' y a pas de garantie que toutes les requêtes SQL depuis le démarrage de l'instance y soient présentes: tout dépend de la taille du cache et de l'activité de la base.

    Extrait du Concetps Guide:

    The library cache stores the executable (parsed or compiled) form of recently referenced SQL and PL/SQL code. The dictionary cache stores data referenced from the data dictionary. Many of the caches in the shared pool automatically increase or decrease in size, as needed, including the library cache and the dictionary cache. Old entries are aged out of these caches to accommodate new entries when the shared pool does not have free space.

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2006
    Messages : 139
    Par défaut Tkprof
    Bonsoir,

    le plus exhaustif sera de tracer la session:
    http://oracle.developpez.com/guide/tuning/tkprof/

    cdt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/03/2014, 10h51
  2. [9.1] Connaître les droits d'un utilisateur sur une base de données
    Par stc074 dans le forum Administration
    Réponses: 3
    Dernier message: 03/03/2014, 20h12
  3. Connaître les requêtes reçues par Oracle XE
    Par benben02 dans le forum Administration
    Réponses: 1
    Dernier message: 08/12/2008, 08h44
  4. Réponses: 4
    Dernier message: 09/01/2007, 14h28
  5. Réponses: 44
    Dernier message: 14/03/2005, 09h43

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