Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/09/2007, 17h36   #1
Invité de passage
 
Inscription : août 2006
Messages : 19
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 19
Points : 3
Points : 3
Par défaut Quelle stratégie d'archivage?

Bonjour à tous,

Je travaille sur un CRM dont les données sont stockées dans une base Oracle 10g.

Je dois mettre en place un programme d'archivage des anciens clients et de toutes leurs données rattachées (donc à partir d'une table mère et x tables filles).

Je dois aussi pouvoir restaurer les informations concernant un ancien client dont les données seraient archivées sur demande.

J'hésite sur la solution à appliquer.

Quelqu'un a déjà rencontré une situation similaire?

D'avance merci.
Alexandre_P est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2007, 10h14   #2
Membre expérimenté

 
Inscription : décembre 2003
Messages : 480
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 480
Points : 539
Points : 539
et tu hésites entre quelles solutions ???

ce qui justifie la technique d'archivage , ce sont tes requirements : est-ce que les données doivent être accédées par l'appli ?
__________________

*** OPN Exadata Specialist ***
*** OCE Performance Tuning 11g ***
*** OCE Rac 10g ***
*** OCP DBA 9i-10g-11g ***
Marc Musette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2007, 10h37   #3
Invité de passage
 
Inscription : août 2006
Messages : 19
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 19
Points : 3
Points : 3
J'ai envisagé 2 solutions:
  • un traitement avec export Oracle
    Le principal inconvénient, c'est que je devrais faire un dump par table puisque j'ai des critères de sélection donc beaucoup de fichiers au total.

    Evidemment, la restauration des données d'une personne serait un peu compliquée mais elle sera (en théorie) extrêmement rare.
  • un traitement avec déplacement des données dans des tables bis

    Cette solution me paraît plus propre mais elle nécessite de recréer beaucoup de tables bis.
Alexandre_P est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2007, 10h38   #4
Invité de passage
 
Inscription : août 2006
Messages : 19
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 19
Points : 3
Points : 3
Et pour répondre à ta question:

OUI, les données restaurées devront être accessibles par l'appli
Alexandre_P est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2007, 13h25   #5
Membre expérimenté

 
Inscription : décembre 2003
Messages : 480
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 480
Points : 539
Points : 539
si les données archivées doivent être accessibles via l'appli, je ne vois pas très bien comment la solution "export" ferait l'affaire

il me semble que tu n'as pas d'autres choix que de stocker les données archivées dans des tables

soit tu crées de nouvelles tables , soit tu ajoutes un flag aux tables existantes pour dire si la données est archivée ou pas et tu utilises des views pour accéder aux données "live" ou aux données archivées

une façon à envosager est également le partitionning

une autre façon est également de te demander si tu as vraiment besoin d'archiver ... d'ailleurs pourquoi te faut-il archiver ??? étant donné que ces données doivent toujours être accessibles via l'appli ...
__________________

*** OPN Exadata Specialist ***
*** OCE Performance Tuning 11g ***
*** OCE Rac 10g ***
*** OCP DBA 9i-10g-11g ***
Marc Musette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2007, 14h46   #6
Invité de passage
 
Inscription : août 2006
Messages : 19
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 19
Points : 3
Points : 3
Désolé, je n'ai pas été très clair.

Quand elles sont archivées, les données ne doivent pas être accessibles par l'appli.
Par contre, si je les restaure, elles doivent l'être.

A mon avis, les solutions "flags + vues" ou "tables partitionnées" ne sont pas possibles car l'apppli CRM est un progiciel et il n'est pas envisageable de modifier tous les accès aux tables.

Je me demande si je ne vais pas m'orienter tout simplement vers la conservation d'une archive complète de ma base vue que la fréquence de purge sera faible (sans doute annuelle).
Alexandre_P est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2007, 16h47   #7
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Moi je verrais bien des tables d'archivage rempli par un trigger ON_DELETE sur les tables d'origines
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2007, 18h04   #8
Invité de passage
 
Inscription : août 2006
Messages : 19
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 19
Points : 3
Points : 3
Oui, ça correspondrait à la solution que j'avais appelé "déplacement des données dans des tables bis".

Mais je lui trouve 2 inconvénients:
  • beaucoup de tables d'archivage à créer
  • la taille de la base ne diminue pas
Alexandre_P est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2007, 22h23   #9
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
- quel est le problème ? Une boucle FOR avec EXECUTE IMMEDIATE et tu crées tes tables en une seule commande
- certes, mais tu peux les mettre dans un tablespace compressé... et un export consomme aussi du disque. Inconvénient de l'export, tu ne peux pas ajouter de lignes dans un fichier qui existe déjà
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2007, 11h07   #10
Invité de passage
 
Inscription : août 2006
Messages : 19
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 19
Points : 3
Points : 3
Je ne connais pas la boucle FOR avec EXECUTE IMMEDIATE mais ça a l'air très pratique, tu peux me donner un exemple?
Alexandre_P est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2007, 13h53   #11
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
une recherche sur le forum et dans la FAQ devra suffire
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2007, 10h01   #12
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 56
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 56
Points : 32
Points : 32
Salut,

pour éviter que la base n'augmente, tu peux toujours mettre les données archivées dans une autre instance et ceci directement par des commandes SQL.

1- création de l'instance d'archive
2- sur l'instance de production création d'un database link vers la base d'archive
3- transfert des données à archiver de la base de prod vers la base d'archive en utilisant le database link.

ainsi la base de prod ne contiendra que les données courantes et sa taille ne devrait pas augmenter énormément à cause des données archivées.
autre avantage : pouvoir sauvegarder/restaurer que les données de production ou celle d'archive.
possibilité de mettre les instances sur des serveurs distincts pour optimiser les performances et l'espace disque du serveur de production.

et pour la restauration des données archivées dans la base de prod, il suffit de faire un transfert en sens inverse des données via le database link.


enfin c'est juste une idée.
Zugg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2007, 10h47   #13
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Citation:
Envoyé par Zugg Voir le message
et pour la restauration des données archivées dans la base de prod, il suffit de faire un transfert en sens inverse des données via le database link.
Il suffit même de faire un vue qui fait un UNION ALL de la table locale et de la table distante
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2007, 14h05   #14
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 56
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 56
Points : 32
Points : 32
Citation:
Envoyé par orafrance Voir le message
Il suffit même de faire un vue qui fait un UNION ALL de la table locale et de la table distante

oui en effet, mais si la table contient des LOB, je pense pas que la vue fonctionne et permette de les récupérer via un DBLink...
Zugg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2007, 15h23   #15
Invité de passage
 
Inscription : août 2006
Messages : 19
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 19
Points : 3
Points : 3
Cette solution me plait bien, elle répond à toutes mes contraintes.

Merci à tous pour vos réponses.
Alexandre_P est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h52.


 
 
 
 
Partenaires

Hébergement Web