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 :

Détecter les modifications sur une base de données


Sujet :

Oracle

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 87
    Points : 43
    Points
    43
    Par défaut Détecter les modifications sur une base de données
    Bonjour,

    Je dois me connecter à une base distante pour récuperer certaines données de certaines tables, de manière régulière. Comme pour faire un backup journalier en fait.
    Jusqu'à present je vois comment etablir la connexion etc... mais le problème auquel je fais face est: Comment savoir ce qui vient d'etre ajouté/modifié sur les dernières 24h par exemple?

    Merci.

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Bonjour,

    A mon avis le plus simple c'est d'avoir une table sur ta base "locale" qui stocke la date du dernier import.
    Comme ça tu pourras interroger la base distante avec des requêtes du style BETWEEN date_dernier_import AND sysdate.

    Ceci dit si tu n'as pas de date (un sysdate pour chaque insert/update) sur ta base distante pour faire la comparaison,
    tu dois pouvoir t'en sortir avec IN/NOT IN, EXISTS/NOT EXISTS, ou MERGE (à partir de 9i).

    Les vues matérialisées peuvent également correspondre à ton besoin.

  3. #3
    Membre confirmé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Points : 534
    Points
    534
    Par défaut
    Salut,

    Tu peux utiliser le champ last_ddl_time des vues DBA_OBJECTS, ALL_OBJECTS ou USER_OBJECTS. Ce champ contient la date et l'heure de la dernière modification (instruction DDL) des objets de la BD.

    Peu être que si tu avais mis le mot clé "BACKUP" dans ton titre tu aurais eu plus facilement de l'aide, j'ai entendu parlé de l'outil RMAN, je ne l'ai jamais utilisé mais il peut peu être t'aider pour les sauvegardes.

    a+++++++
    "Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Oui mais le DDl (alter/truncate...) ça ne l'aidera pas à retrouver les modifications DML (insert/update/delete).
    Tu peux regarder cette discusion pour plus d'info :
    http://www.developpez.net/forums/d40...modifiees-dml/

  5. #5
    Membre confirmé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Points : 534
    Points
    534
    Par défaut
    Ouais t'as parfaitement raison Skuatamad, j'avais pas fais très attention en lisant le topic; dans mon esprit c'était les DDL que Abdelhamidem voulait tracer.
    Oublions ce que j'ai écris
    "Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang

  6. #6
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    Par défaut
    RMAN permet de faire des sauvegardes incrémentales sur plusieurs niveaux, en sauvegardant juste les blocks modifiés depuis la dernière sauvegarde totale par exemple
    Sinon il faudrait faire un trigger sur chaque table (bonjour l'usine à gaz ...) sur les événements événements insert/delete/update pour tracer les dates de dernière modification DML de chaque table
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  7. #7
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 87
    Points : 43
    Points
    43
    Par défaut
    Désolé, j'arrive plusieurs jours plus tard!

    Merci beaucoup pour toutes les réponses... je vais etudier vos suggestions de mon coté!

  8. #8
    Membre régulier
    Profil pro
    Data Engineer
    Inscrit en
    Octobre 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Data Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 31
    Points : 74
    Points
    74
    Par défaut Utilisation des timestamps
    Si tu n'a pas de dates dans une table, tu peux retrouver les insert/update par les timestamps. Pour cela il faut stocker le dernier timestamp utilisé, pour repartir de celui-là.

    Mais attention ça ne marche pas du tout pour trouver les delete.

    Ca dépend du comportement de la table.

Discussions similaires

  1. Réponses: 14
    Dernier message: 08/02/2011, 11h39
  2. Réponses: 1
    Dernier message: 02/02/2011, 16h11
  3. Réponses: 1
    Dernier message: 27/04/2010, 11h10
  4. Enregistrer les modification sur une base
    Par solo1 dans le forum VB.NET
    Réponses: 0
    Dernier message: 09/01/2010, 23h34
  5. Problème avec les indexes sur une base de données.
    Par osoudee dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 09/02/2006, 10h24

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