|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2007 Messages : 21 ![]() |
Hello,
Peut-être qqun pourra m'aider à trouver une astuce pour écraser une partition existante dans la base source avec la fonction Oracle IMP. Je n'ai pas trouvé le paramètre...Pour le moment, il fait du APPEND... Attention, je ne peux pas faire de truncate table avant ... Explications: chaque mois j'importe (avec IMP) 4 partitions des 4 mois précédents. Je ne veux pas faire de l'APPEND mais du "Replace"... car les 4 partitions sous mises-à-jours chaque mois... Qqun pourrait-il m'aider à trouver une solution? (paramètre de la fonction IMP? Ou singleton?...) |
|
|
00
|
|
|
#2 | |
|
Membre régulier
![]() Développeur informatique Inscription : février 2005 Messages : 269 ![]() |
peut tu préciser ta version d'oracle ?? 8i, 9i, 10g, ...??
__________________
Citation:
|
|
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2007 Messages : 21 ![]() |
Il s'agit de la 10g ... Par contre, j'utilise IMP et non IMPDP ...
|
|
|
00
|
|
|
#4 | |
|
Membre régulier
![]() Développeur informatique Inscription : février 2005 Messages : 269 ![]() |
ce ne serai pas cette option (en gras) ??
Code :
imp system/manager file=expdat.dmp destroy=y full=y ignore=y log=expdat.log
__________________
Citation:
|
|
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2007 Messages : 21 ![]() |
ça paraît en effet pas mal ... sauf qu'en faisant un destroy=y, je vais perdre les anciennes partitions dans ma table cible.
Explications: chaque mois, je load les 4 mois (4 partitions) précédentes... si en juillet, je load mars, avril, mai, juin et qu'en aout je load avril, mai, juin, juillet avec un destroy=y, je vais perdre la partition de mars... là est mon problème... |
|
|
00
|
|
|
#6 | |
|
Membre régulier
![]() Développeur informatique Inscription : février 2005 Messages : 269 ![]() |
et si tu fait l'import en te basant sur une requete SELECT (VUE, Vue materialisé) qui contient les N mois (calculé en PL/SQL) ?
sinon ... je ne suis pas expert Oracle mais une patition par mois me parrait bizard comme structure... (à moins d'avoir plusieurs millions de row par mois ??)
__________________
Citation:
|
|
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2007 Messages : 21 ![]() |
En effet, 4 millions de lignes par mois .. ce qui amène à une partition mensuelle ...
Oui, passer par une table de staging est la solution la plus simple mais coûteuse (load, storage, ...) Une idée serait de placer un trigger sur l'insert qui ferait du update sur l'existant... ce qui concerverait les anciennes partitions et mettrait à jour les partitions qui se chevauchent ... Question: est-ce qu'un trigger sur une table cible se déclanche lors de la fonction IMP ? |
|
|
00
|
|
|
#8 | ||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
1) destroy :
destroy n'a rien à voir avec l'effacement d'une table/partition. Destroy concerne les commandes CREATE TABLESPACE uniquement. 2) truncate : truncate partition me parait la bonne approche Code :
|
||
|
00
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2007 Messages : 21 ![]() |
Oui, juste, j'avais bien pensé au truncate partition p1.
Sauf que je ne connais pas, avant l'imp, le nom de la partition à truncater... Ce qui signifie que je devrais faire chaque mois mon IMP de 4 partitions (en APPEND pour les mois existants en base) puis je lance une routine après l'IMP qui fait un truncate des "vieilles" partitions qui étaient à double? C'est ça ton idée pour mon problème (qui est aussi un problème de process, j'en conviens |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com