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

Administration Oracle Discussion :

Comment tracer les requêtes lancées sur une base


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 146
    Par défaut Comment tracer les requêtes lancées sur une base
    Bonjour,

    Je me permets de vous solliciter car je n'arrive pas à tracer les requêtes sur une base de données.

    J'ai interrogé la Table V$SQL et V$SQLAREA, mais je ne suis pas sûr que cela répond à ma demande.

    Après je me dis que je devrais peut-être lancer un audit_trail.

    Est-ce que quelqu’un pourrait m’aider ?

    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Salut,

    Quel est précisément ton besoin?

    Si c'est de lister TOUTES les requêtes SQL de ta base, il faut passer par V$SQL. MAIS, attention, si ta base est TRES active, cette vue sera rapidement purgée donc tu risques de louper plusieurs requêtes.
    Il y a DBA_HIST_SQLTEXT par exemple qui a un historique MAIS pas de tous les ordres SQL, seulement les plus consommateurs de ressources.

    Tu peux mettre ta base en mode trace, tracer l’événement système 10046 pour voir ce qui se passe en mémoire, MAIS cela va consommer beaucoup de ressources et peut faire exploser ton filesystem. Donc a ne faire que pour une durée courte.

    L'audit? Je ne suis pas sur que cela te permette de tracer les requêtes SQL.

    Une solution, mais impossible sous Oracle, aurait été de faire un trigger AFTER INSERT dans V$SQL pour copier chaque nouvel ordre SQL dans une table à part; mais Oracle ne permet pas la création de trigger sur un objet du schéma SYS.

  3. #3
    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 peux utiliser le package statspack, tu n'auras pas 100% des requêtes mais une bonne partie.

  4. #4
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Euh, pas super simple à utiliser et puis, même si c'est gratos, c'est deprecated depuis plusieurs versions par Oracle.

    Avec AWR (les vues qui commencent par DBA_HIST_***) tu auras aussi les ordres principaux mais pas tous. Mais il faut avoir le Diagnostic Pack.

    A nouveau, qu'il précise son besoin.

  5. #5
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 462
    Par défaut
    Citation Envoyé par Ikebukuro Voir le message
    Euh, pas super simple à utiliser et puis, même si c'est gratos, c'est deprecated depuis plusieurs versions par Oracle.
    Pourtant vous suggérez juste avant d'utiliser la mise en trace 10046 ! Si vous appelez ça super simple...
    AWR n'est guère qu'un statspack modernisé, enrichi et automatisé, mais la méthodologie de diagnostic et d'analyse est la même entre ces deux outils.

    Pour ce qui est du côté obsolète de statspack "depuis plusieurs versions", c'est vraiment loin d'être un outil périmé et il continue d'évoluer à chaque version. Par exemple, en 12.1 Statspack a intégré le support du mode multitenant.
    C'est pourquoi je l'utilise encore à tour de bras pour mes audits chez mes clients qui sont en édition Standard, ou bien n'ont pas les licences requises pour AWR, et je suis bien content de pouvoir compter sur lui, car nous serions bien dépourvus dans le cas contraire !

  6. #6
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Si besoin, voilà ce que j'utilise comme code pour faire une trace 10046.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
              SQL> ALTER SESSION SET timed_statistics = TRUE;
              SQL> ALTER SESSION SET max_dump_file_size = unlimited;
              SQL> ALTER SESSION SET TRACEFILE_IDENTIFIER = 'zztest_create_table01.trc';
              SQL> ALTER SESSION SET events '10046 trace name context forever, level 4';
    L'ordre SQL à tracer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL> CREATE TABLE ZZ01 (ID NUMBER);
    Ne pas oublier de désactiver la trace une fois l'ordre SQL exécuté.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL> ALTER SESSION SET events '10046 trace name context off';
    Pour savoir où est la trace, faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM v$diag_info;
    et voir le répertoire trace.

Discussions similaires

  1. Requête SQL sur une base Access, where sur un champ date
    Par digital prophecy dans le forum Bases de données
    Réponses: 1
    Dernier message: 09/05/2008, 16h47
  2. Requête SQL sur une base HF
    Par PimSaVie dans le forum WinDev
    Réponses: 6
    Dernier message: 02/01/2008, 08h28
  3. Comment déterminer les champs modifiés dans une base
    Par Casual dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/06/2007, 08h33
  4. Historique des requêtes exécutées sur une base
    Par Markeen dans le forum Firebird
    Réponses: 1
    Dernier message: 12/12/2006, 21h47
  5. Comment tracer les requêtes ?
    Par srappaille dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 26/01/2006, 18h57

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