Dans notre environnement de développement (Oracle 11G), nous devons souvent restaurer des bases de données (utilisateurs) aux versions précédentes pour tester les mises à niveau, vérifier les défauts, etc.
Nous utilisons Expdp/ImpDP pour effectuer notre sauvegarde/restauration.
Pour les sauvegardes, nous courons ...
expdp 'sys/password@orcl as sysdba' schemas=CurrentUser directory=DirLabel Dumpfile=MyDatabase.dmp logfile=MyDatabase.log
Pour les restaurations, nous avons laissé tomber l'utilisateur (base de données) manuellement, puis en cours d'exécution
impdp 'sys/password@orcl as sysdba' directory=DirLabel Dumpfile=MyOldDatabase.dmp logfile=MyRestore.log remap_schema=OLDUser:CurrentUser
Nous essayons maintenant d'automatiser ce processus et de poser une question.
Devons-nous laisser tomber l'utilisateur actuel (base de données) avant la restauration ou y avoir une option/un drapeau sur IMPDB qui peut être utilisé pour forcer une restauration complète? J'ai regardé la table_exists_action = remplacer, mais j'ai remarqué que je reçois toujours les mêmes "erreurs" pendant la restauration si je quitte l'option de la ligne de commande.
Les pensées?
Je n'ai trouvé aucune commande impdp
qui vous permettrait de supprimer le schéma existant avant d'importer des données. Mais vous devez savoir que les utilitaires de commande de la pompe de données sont basées sur les packages PL/SQL DBMS_DATAPUMP
et DBMS_METADATA
. Ainsi, vous pouvez bien écrire vos propres scripts PL/SQL pour automatiser vos programmes d'appel de votre déménagement de données dans DBMS_DATAPUMP
directement. Et comme c'est PL/SQL, vous pouvez simplement appeler DROP USER
Déclaration dans vos scripts avant les appels aux programmes de DBMS_DATAPUMP
et DBMS_METADATA
.
Je pense que cette approche est plus flexible et d'automatiser davantage vos tâches que vous pouvez utiliser Oracle Scheduler .