|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : août 2006 Messages : 19 ![]() |
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. |
|
|
00
|
|
|
#2 |
|
Membre expérimenté
![]() ![]() Inscription : décembre 2003 Messages : 480 ![]() |
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 *** |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : août 2006 Messages : 19 ![]() |
J'ai envisagé 2 solutions:
|
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : août 2006 Messages : 19 ![]() |
Et pour répondre à ta question:
OUI, les données restaurées devront être accessibles par l'appli |
|
|
00
|
|
|
#5 |
|
Membre expérimenté
![]() ![]() Inscription : décembre 2003 Messages : 480 ![]() |
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 *** |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : août 2006 Messages : 19 ![]() |
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). |
|
|
00
|
|
|
#7 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Moi je verrais bien des tables d'archivage rempli par un trigger ON_DELETE sur les tables d'origines
|
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : août 2006 Messages : 19 ![]() |
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:
|
|
|
00
|
|
|
#9 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
- 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à |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : août 2006 Messages : 19 ![]() |
Je ne connais pas la boucle FOR avec EXECUTE IMMEDIATE mais ça a l'air très pratique, tu peux me donner un exemple?
|
|
|
00
|
|
|
#11 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
une recherche sur le forum et dans la FAQ devra suffire
|
|
|
00
|
|
|
#12 |
|
Nouveau Membre du Club
![]() Inscription : mai 2004 Messages : 56 ![]() |
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. |
|
|
00
|
|
|
#13 | |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Citation:
|
|
|
|
00
|
|
|
#14 |
|
Nouveau Membre du Club
![]() Inscription : mai 2004 Messages : 56 ![]() |
|
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : août 2006 Messages : 19 ![]() |
Cette solution me plait bien, elle répond à toutes mes contraintes.
Merci à tous pour vos réponses. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com