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 :

Capter les requêtes SQL


Sujet :

Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Capter les requêtes SQL
    Bonjour,

    J'utilise une base Oracle 10gR2 sur laquelle j'ai tous les privilèges.

    Je cherche à pouvoir capter tous les ordres SQL générés par les utilisateurs (généralement au travers d'outils tels que OWB, Reports, BO, ...).
    Existe-t-il un moyen de récupérer ces informations ? Voir même un historique des ordres exécutés sur la base ?

    Merci pour votre aide.

  2. #2
    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
    Points : 3 597
    Points
    3 597
    Par défaut
    On peut utiliser la vue V$SQL http://download-uk.oracle.com/docs/c...htm#sthref4036
    ou éventuellement mettre la trace SQL sur toutes l'instance avec SQL_TRACE=true (pas vraiment recommendé pour des raisons de performances mais peut être plus précis).

    Avec la 10G, le Automatic Workload Repository permet de garder un historique pour une période de 7 jours de certaines requêtes: voir http://download-uk.oracle.com/docs/c...tat.htm#i27008

  3. #3
    Membre averti Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Points : 408
    Points
    408
    Par défaut
    Logminer ?

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Le Log miner n'a pas vocation primaire à tracer des sessions. Son utilisation peut être fastidieuse pour le bur recherché .

    Il existe un tutoriel trés bien fait de Léo sur les maniéres de tracer une session qui devrait vous donner une premiére idée sur la question

    Bon courage

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    logminer ne trace que les modifications de données en plus

    La trace est un bon outil ou encore v$sqlarea

  6. #6
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    LogMiner semble plutôt être un outil pour faire des stats sur des sites Web :
    "LogMiner is a powerful log analysis package for Apache and IIS".

    La vue v_$SQL semble bien intéressante, il ne manque plus qu'à la relier à un process et à un utilisateur.

    Merci pour votre aide.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Points : 271
    Points
    271
    Par défaut
    Bonjour,
    vous serez gentil de m'indiquer comment relier v$sql à un process et à un utilisateur. D'avance merci.

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    v$sql.hash_value = v$session.sql_hash_value

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Points : 271
    Points
    271
    Par défaut
    Merci , mais vous pouvez simplifiez un peu SVP. Une requette qui me rend SID, et process ID de OS et le texte SQL. D'avance merci.

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    faudrait essayer tout seul quand même

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select sid, spid, sql_text 
    from v$sql sql, v$session ses, v$process pro
    where sql.hash_value = ses.sql_hash_value  
    and pro.ADDR = ses.paddr

  11. #11
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Hello,
    J'en suis arrivé à la requête suivante qui semble bien me retourner ce dont j'ai besoin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select 
    ses.sid,ses.username,ses.status,ses.server,ses.schemaname,ses.osuser,ses.machine, ses.terminal,ses.type,ses.module,ses.logon_time,ses.blocking_session_status,ses.event,ses.state,
    sq.sql_fulltext,sq.optimizer_cost,sq.elapsed_time,sq.last_load_time
    from 
    v$sql sq, 
    V$SESSION ses
    where 
    ses.sql_hash_value = sq.hash_value AND 
    username = 'xxx';

    A+

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Points : 271
    Points
    271
    Par défaut
    Salut à tous et un grand merci à Fred_D.
    J'ai essayé la dérnière requette donnée par ced62, mais je tombe sur les identificateurs des champs non existants : state, event ...
    Je suis en version Oracle 9.2.0.2 , est-ce que la requette de ced62 est pour version 10g seulement ?
    Merci d'avance.

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    en effet, sa requête ne fonctionne qu'en 10g.

    La version 9i sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT ses.SID, ses.username, ses.status, ses.server, ses.schemaname,
           ses.osuser, ses.machine, ses.terminal, ses.TYPE, ses.module,
           ses.logon_time, sq.sql_text, sq.optimizer_cost, sq.elapsed_time,
           sq.last_load_time
      FROM v$sql sq, v$session ses
     WHERE ses.sql_hash_value = sq.hash_value

Discussions similaires

  1. [SQL] Quelles sont les requêtes SQL que l'on peut pirater ?
    Par JackBeauregard dans le forum PHP & Base de données
    Réponses: 29
    Dernier message: 21/09/2006, 19h56
  2. [SQL] Sprintf ou concaténation pour créer les requêtes SQL?
    Par EvilAngel dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 15/09/2006, 17h08
  3. [D5][BDE][Multibase] Récupérer les requêtes SQL d'une TTable
    Par Escandil dans le forum Bases de données
    Réponses: 3
    Dernier message: 11/01/2006, 14h29
  4. [iBatis] Logger les requètes SQL
    Par bslota dans le forum Persistance des données
    Réponses: 2
    Dernier message: 25/11/2005, 14h29
  5. tracer les requêtes SQL
    Par izioto dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 13/10/2005, 16h35

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