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 :

Suppression de données anciennes


Sujet :

Oracle

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Suppression de données anciennes
    Bonjour,

    J'ai une table qui doit contenir des données sur un an et demi (18 mois).
    Mais il y a des données plus anciennes dans la table.
    je voudrais automatiser le process. c'est à dire faire en sorte que chaque jour la donnée la plus ancienne soit effacé,
    de sorte qu'on ait toujours les données de 18 mois dans la table.

    Merci d'avance bonne journée.

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Utilisez Dbms_Job ou Dbms_Scheduler.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci pour ton indication. Je vais m'y référer.

  4. #4
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 52
    Points : 116
    Points
    116
    Par défaut
    Bonjour,

    j'utiliserai le partionning.
    - création des 18 partitions mois.
    - chaque fin de mois : roulement de partition (dbms_scheduler) : création mois + 2 ou 3 (histoire d'avoir toujours un train d'avance en cas de problème, ce qui évite les erreurs lors des inserts sur des partitions manquantes parce que le job c'est mal passé) + suppression de la partition mois la plus ancienne.

    Ainsi on a toujours les 18 derniers mois. La seule différence c'est que le traitement est mensuel et non quotidien.

    Franck

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci pour vos interventions.
    Je peux s'il vous plait avoir un exemple de code.
    Je suis novice et je sais pas vraiment comment faire.

    Merci.

  6. #6
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 52
    Points : 116
    Points
    116
    Par défaut
    Bonjour,

    je suis désolé mais je ne peux pas prendre le temps de faire un exemple si c'est le partitionning qui est choisit.
    Ce que je ferrai en gros : il faut créer 18 partitions sur la table recevant l'historique, l'idéal est qu'elle contienne une colonne date/heure (principe basique d'un historique) mis à jour à chaque insert :
    1 partition par mois en décalant à mois + 1 par exemple. Ce qui laisse 1 mois pour réparer une éventuelle erreur lors du job mensuel de création de la nouvelle partition mois+1 et suppression de la plus ancienne.

    Prenons le mois de juin/2013, il faut donc créer 18 partitions nommées :
    allant de part-01012012 jusqu'à part-01072013 by range sur la <colonne date> less than (la date calculée). Ca c'est pour initialiser les partitions qui n'existent pas aujourd'hui d'après ce que j'ai compris.

    Ensuite il faut créer un job mensuel qui, tous les mois donc, créera la partition mois_max + 1 et détruira la partition la plus ancienne.
    Par exemple un job le 03 de Juillet/2013 : créer la partition part-01082013 et détruire la partition part-01012012. Ce job/scripts/procedure PL/sql doit être capable de réaliser tous les calculs sur les dates nécessaires.
    Si une erreur survient pendant ce job ce n'est pas bloquant car la part-01072013 existante permet à l'application cliente de faire ses insert et laisse aux exploitants/dba le temps pour réparer.

    Bon courage.

    Franck.

  7. #7
    Membre éclairé Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Points : 769
    Points
    769
    Par défaut
    Bonjour,

    Pour compléter la réponse de Franck, quelques liens sur la la doc officielle :
    Partitioning :
    http://docs.oracle.com/cd/E11882_01/.../toc.htm#BEGIN
    http://docs.oracle.com/cd/E11882_01/...htm#CNCPT88858

    Job et scheduler :
    http://docs.oracle.com/cd/E11882_01/...e.htm#g1046708
    http://docs.oracle.com/cd/E11882_01/...1.htm#BGBFBIHF

    Cordialement,

    Arkhena

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour à tous,

    Merci pour vos indications. Je vais tester ce que Franck a exposé et je vous fais un retour.

    Cordialement,

    Allabah.

Discussions similaires

  1. suppression des données
    Par nabil1 dans le forum Oracle
    Réponses: 6
    Dernier message: 07/04/2006, 14h38
  2. Problème d'espace disponible après suppression de données
    Par carjo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/03/2006, 16h48
  3. Suppression de données
    Par ledaker dans le forum Access
    Réponses: 3
    Dernier message: 10/03/2006, 18h10
  4. [C#] Limites de C# quand a la suppression de données
    Par Anonymous dans le forum Windows Forms
    Réponses: 6
    Dernier message: 29/01/2005, 00h18
  5. Suppression de données
    Par Julien Dufour dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/12/2004, 16h25

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