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 :

Extract des dates de lecture des objets


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 18
    Par défaut Extract des dates de lecture des objets
    Environnement : Oracle 10

    Bonjour,
    j'aimerai extraire avec une requête avec tous les objets d'un schéma avec la date de la dernière lecture de l'objet.

    Je pensais pouvoir l'extraire de la table dba_objects, mais la colonne LAST_DDL_TIME indique la modification de l'objet, pas sa lecture.

    Pensez-vous que ce soit possible d'extraire ce que je veux ?

    Merci pour votre support.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2012
    Messages : 127
    Par défaut
    Bonjour,

    Pour cela, il faut mettre en place un audit sur l'action désirée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AUDIT SELECT ON MA_TABLE BY ACCESS;
    Chaque SELECT sur cette table sera enregistré à partir de cet instant, et consultable dans la vue DBA_AUDIT_OBJECT. Et connaître la date de dernière modification sera aisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT MAX(TIMESTAMP)
    FROM DBA_AUDIT_OBJECT 
    WHERE OBJ_NAME='MA_TABLE'
    AND ACTION_NAME='SELECT';

  3. #3
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 18
    Par défaut
    Merci pour ta participation rapide à la réponse Baldrick

    Si je dois faire l'audit de tous les objets d'un user en particulier, que donne la commande AUDIT svp ?

    Peut-on estimer le temps et la volumétrie que prendra l'audit ?
    Est-ce dans le tablespace SYSTEM ou SYSAUX que cette table DBA_AUDIT_OBJECT se remplit ?

    Merci encore.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2012
    Messages : 127
    Par défaut
    Toutes les tables d'un utilisateur donné ? J'aurais préféré que ce soit toutes les tables (AUDIT SELECT ANY TABLE BY ACCESS; ), ou toutes les tables par un utilisateur donné (AUDIT SELECT ANY TABLE BY utilisateur BY ACCESS; ), ça se serait résolu simplement. Mais toutes les tables d'un schéma spécifique, il semble que ce ne soit pas un cas prévu par la commande AUDIT.

    Les données d'audit sont stockées dans la table SYS.AUD$ (DBA_AUDIT_OBJECT est une vue), qui se trouve dans le tablespace SYSTEM. Et si vous auditez tous les select sur toutes les tables, il risque effectivement d'y avoir des problèmes de stockage; il faudra donc purger la table régulièrement...

    Peut-être que le Fine Grained Auditing serait plus approprié à ton cas: de mémoire, il permet d'appeler une procédure susceptible de mettre à jour une table particulière et donc de ne stocker que la date de dernière utilisation pour chaque table. Mais c'est disponible uniquement en version Enterprise, et en plus c'est une option payante.

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2010
    Messages : 73
    Par défaut
    On peut également scripter grâce à une requête dynamique l'audit de toutes les tables d'un schéma :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select 'AUDIT SELECT ON '||owner||'.'||table_name||' BY ACCESS ;' from dba_tables where owner = upper('&1');
     
    Avec &1 étant le nom du schéma.

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Salut

    il existe une autre alternative qui implique du code.
    J'ai eu l'occasion de voir ça dans different projets auxquels j'ai participé. Les developpeurs ont isolé toutes les commandes DML dans le code et ont creer une fonction qui log dans une table Oracle toutes les actions.

    Cette table possede peu de champs: date, schema.table, action, module_source(nom de la class appelante).

    Ensuite il existe un Job qui purge cette table ne laissant que le dernier mois d'activité.
    Cette methode permet de connaitre l'activité sans avoir besoin de programmer l'audit. C'est une solution discutable, mais comme alternative c'est pas mal.

    A bientôt

Discussions similaires

  1. ouverture de n fichier excel et lectures des dates
    Par hanen2010 dans le forum MATLAB
    Réponses: 1
    Dernier message: 02/06/2010, 16h14
  2. Lecture des dates
    Par SoGood dans le forum HyperFileSQL
    Réponses: 1
    Dernier message: 08/06/2008, 02h16
  3. [Dates] Problème avec des dates et Heures
    Par snakejl dans le forum Langage
    Réponses: 9
    Dernier message: 16/05/2006, 18h04
  4. Réponses: 3
    Dernier message: 27/01/2006, 12h36
  5. Réponses: 2
    Dernier message: 14/12/2004, 18h42

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