web-dev-qa-db-fra.com

Comment remplacer et écraser tous les objets existants dans Oracle avec impdp pour l'importation complète de la base de données?

Je veux remplacer tous les objets existants dans ma base de données, pas seulement les tables, dans ma base de données actuelle.

J'ai exécuté expdp avec le paramètre full=yes en tant qu'utilisateur système, à qui j'ai accordé datapump_imp_full_database lorsque je suis connecté en tant que sysdba, à partir de l'instance à partir de laquelle j'importe. J'ai exécuté impdp sur la base de données cible avec le paramètre table_exists_action=replace, mais (naturellement) seules les tables existantes ont été remplacées, mais pas les procédures, les fonctions, les vues.

Existe-t-il un équivalent de table_exists_action pour tous les objets? Sinon, comment puis-je y parvenir?

Les deux bases de données sont Oracle 12c sur Windows 10.

5
Saad Mahmood

Je ne pense pas qu'il existe une option "Remplacer" pour les objets non-table comme les procédures, les packages, etc.

La meilleure option serait de supprimer complètement le schéma avant l'importation du datapump. De cette façon, le vidage de données recréera le schéma et tous les objets contenus.

4
andba77

Il y a un piège - si vous supprimez le schéma - vous avez perdu toutes les autorisations accordées aux autres objets de schéma que le schéma possédait - et certaines fonctions/procédures/fonctions qui dépendent des objets d'autres schémas - ne seront pas compilées.

Donc - avant de vous abandonner - vous devez préparer des scripts pour reconstruire cet objet octroie.

select * from dba_tab_privs where grantee='<schema-for-drop/import>'

2
Piotr Pisera

Vous souhaitez exporter les objets de la base de données source et les importer dans la base de données cible. Les objets de la base de données cible qui existent dans la base de données source doivent être remplacés par l'objet de la base de données source.

Vous pouvez peut-être utiliser la méthode suivante:

  1. faire une exportation complète de la base de données cible
  2. remplacer la base de données cible par une copie de la base de données source
  3. importer le vidage de la base de données cible d'origine dans la nouvelle base de données cible

La nouvelle base de données cible contient les objets de la base de données source, car ils ne sont pas remplacés par l'importation et les objets de la base de données cible d'origine qui ne se trouvent pas dans la base de données source, car ils sont créés par l'importation de la base de données cible d'origine.

Il existe différentes façons de faire une copie de la base de données source

  1. créer une base de données vide et importer la base de données source
  2. utiliser la commande rman DUPLICAT pour créer une copie de la base de données source
0
miracle173