Les commandes expdp/impdp sont-elles appropriées pour la synchronisation quotidienne des schémas ?
-
29-09-2020 - |
Question
J'ai exécuté les commandes suivantes :
expdp system/password@localdb ^
schemas=SCH directory=dumps_dir dumpfile=SCH_%date%.dmp logfile=expdpSCH_%date%.log
Cela fonctionne très bien, sans erreurs.Mais quand j'utilise la commande :
impdp system/password@localdb ^
schemas=SCH directory=dumps_dir dumpfile=SCH_%date%.dmp logfile=impdpSCH_%date%.log
Cela m'a donné un tas d'erreurs indiquant que des tables, des séquences et d'autres éléments existent déjà.J'ai donc une question : puis-je utiliser une telle approche ou c'est faux et je devrais utiliser autre chose ?
La solution
Consultez la documentation pour plus d'informations ou tapez impdp help=y
.Il y a un paramètre (TABLE_EXISTS_ACTION) qui définit si vous souhaitez écraser les objets existants ou si vous souhaitez les ajouter.
TABLE_EXISTS_ACTION
Action à entreprendre si l'objet importé existe déjà.
Les mots-clés valides sont :AJOUTER, REMPLACER, [SKIP] et TRUNCATE.
Autres conseils
Non, ce n'est pas une manière possible:
- La plupart des objets non-tableaux existent déjà dans votre schéma.Vous obtenez déjà de tels messages d'erreur.L'importation ne sera pas écrasée.
- Vous pouvez configurer comment l'exportation devrait fonctionner si une table existe déjà, mais s'il y a une table indiquée par une autre table, tronquer et remplacer ne fonctionnera pas.
- même s'il n'y a pas de référence de clé étrangère à un index de table ralentira l'importation de manière spectaculaire
- Beaucoup d'autres problèmes peuvent se produire (concernant les déclencheurs, les partitions, les références à d'autres tables et peut-être plus)
Donc, la seule façon raisonnable de synchroniser le schéma à l'aide de SPDDP / IMPDP consiste à supprimer le schéma avant d'importer.
Si vous ne voulez pas laisser tomber le schéma pour une raison quelconque, mais remplacez les données des tables, de nombreuses opérations supplémentaires sont nécessaires.