web-dev-qa-db-fra.com

Oracle: la restauration de la base de données complète (utilisateur) nécessite une chute?

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?

3
Tony

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 .

3
Yasir Arsanukaev