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 :

Fichier de journalisation


Sujet :

Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 227
    Points : 77
    Points
    77
    Par défaut Fichier de journalisation
    Bonjour.
    je développe une base de données avec Oracle et PHP et je voudrais qu'à l'affichage d'une donnée, par exemple un texte, je puisse afficher la personne qui l'a ajouté avec la liste des personnes qui l'ont modifié (avec aussi la date).
    Je cherche donc une requête SQL qui connaissant la table et l'identifiant d'une donnée me renvoie la liste des utilisateurs qui ont ajouté/modifié cette donnée.
    Est-ce que les fichiers de journalisation permettent de le faire?
    Merci.

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

    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
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Non, faut que tu le gères toi par trigger dans une table d'historique.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 227
    Points : 77
    Points
    77
    Par défaut
    OK et concrètement, on met quoi dans la table d'historique :comment on fait pour stocker les identifiants qui peuvent être quelconques (nombre, texte, plusieurs nombres) ?

  4. #4
    McM
    McM est déconnecté
    Expert éminent

    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
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Concrètement, tu crées une table à l'identique de la table dont tu veux historiser les modifications, et tu rajoutes une colonne usermaj et datemaj
    Un trigger sur ta table X qui insère dans la table historique X_HIST
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE OR REPLACE TRIGGER X_MAJ
    BEFORE INSERT OR UPDATE ON X
    FOR EACH ROW
    DECLARE
    BEGIN
    	INSERT INTO X_HIST(DATEMAJ, USERMAJ, COL1, COL2..)
      VALUES(USER, SYSDATE, :NEW.col1, :NEW.col2,...);
    END;
    /
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 227
    Points : 77
    Points
    77
    Par défaut
    OK mais j'ai déjà pas mal de tables et donc ça multiplie le nombre de tables par 2. Il n'y a pas un autre moyen avec une seulle table pour l'historique?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 412
    Points : 807
    Points
    807
    Par défaut
    Une table qui centralise tous les changements de toutes les tables?
    Ou repartir les changements sur chacune des tables qui sont surveillées, genre ajouter une nested table pour chacune d'entre-elles?

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

    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
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Franchement, ce genre d'historisation est très lourd en terme de volumétrie.
    Ce serait possible d'avoir une table d'historique commune, avec USERMAJ, DATEMAJ, TABLENAME, PK, COL, OLD_VALUE, NEW_VALUE par exemple.. mais à mettre à jour c'est pas très pratique, et à utiliser encore plus, et au bout d'une semaine la table fait déjà 1M de lignes.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Finalement ce que vous voulez, ne serait-ce pas du Fine Grained Auditing ?

    Je n'ai personnellement jamais utilisé cette fonctionnalité.

  9. #9
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Moselle (Lorraine)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 197
    Points : 591
    Points
    591
    Par défaut
    As tu besoin d'autant de détail?
    Parce que sinon tu ajoute à toutes les tables 4 champs:
    -utilisateur qui a créer
    -date de création
    -utilisateur qui a modifier
    -date de modification

    L'inconvenient c'est que tu as uniquement la dernière personne qui à mis à jour (a toi de voir si c'est un inconvénient).

    Sinon tu fait une table ou tu renseigne ces informations pour toutes les tables qui seraient lancé avec un trigger, mais ca risque d'être galère si tu as beaucoup de tables avec des colonnes du type
    id, nom table, user modif, date modif.
    Oracle DBA OCM 11g, 12c
    OCP 11g, 12c
    OCE RAC, SQL

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 227
    Points : 77
    Points
    77
    Par défaut
    Bonjour et merci pour vos réponses. Finalement, je pense que je vais opter pour une table HISTORIQUE qui va contenir le type d’action (ajout, modification, suppression), une description de la donnée ajoutée/modifiée/supprimée, le login de l’auteur, le nom, le prénom, la date.
    Je ne vais finalement pas stocker l'identifiant (qui peut être un ou plusieurs nombres selon les cas) de la donnée. Le contenu de la table sera limité à 50 entrées.
    Mais j'ai encore une question: l'interface graphique de la base est programmée en PHP: est-ce qu'il vaut mieux faire un trigger pour compléter la table HISTORIQUE ou alors la compléter en PHP?
    Merci.

Discussions similaires

  1. Archivage des fichiers de journalisation
    Par yves123-lg dans le forum Administration
    Réponses: 1
    Dernier message: 24/11/2008, 16h15
  2. Fichier de journalisation trop gros
    Par lemagicien dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 14/10/2008, 10h40
  3. Perte d'un fichier de journalisation courant
    Par elharet dans le forum Administration
    Réponses: 16
    Dernier message: 11/09/2008, 16h07
  4. Informations sur les fichiers de journalisation
    Par couls dans le forum Administration
    Réponses: 2
    Dernier message: 21/05/2008, 15h26

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