web-dev-qa-db-fra.com

Pourquoi est-ce que j'obtiens ORA-39001: valeur d'argument non valide lorsque j'essaie d'impdp dans Oracle 12c?

Lorsque j'exécute cette commande dans Oracle 12c SE2:

impdp system/Oracle_1@pdborcl directory=DATA_PUMP_DIR dumpfile=mydb.dmp nologfile=Y

J'ai compris:

ORA-39001: valeur d'argument non valide

ORA-39000: spécification de fichier de vidage incorrecte

ORA-39088: le nom de répertoire DATA_PUMP_DIR n'est pas valide

Nous avions l'habitude d'importer cela en 11g tout le temps.

Comment puis-je résoudre ces erreurs?

6
Sam

De la documentation 12c :

Tenez compte des exigences suivantes lorsque vous utilisez Data Pump pour déplacer des données vers un CDB:
...

  • L'objet de répertoire Data Pump par défaut, DATA_PUMP_DIR, ne fonctionne pas avec les PDB. Vous devez définir un objet de répertoire explicite dans la PDB que vous exportez ou importez.

Vous devrez définir votre propre objet de répertoire dans votre PDB, contre lequel votre utilisateur (le système ici) dispose de privilèges de lecture/écriture.

create directory my_data_pump_dir as 'C:\app\OracleHomeUser1\admin\orcl\dpdump';
grant read, write on directory my_data_pump_dir to system;

Il peut s'agir du même répertoire de système d'exploitation vers lequel DATA_PUMP_DIR pointe, vous avez juste besoin d'un objet de répertoire distinct. Mais j'ai utilisé le chemin que vous aviez préféré, à partir d'un commentaire sur une question précédente.

Ensuite, l'importation est modifiée pour avoir:

... DIRECTORY=my_data_pump_dir DUMPFILE=mydb.dmp 
7
Alex Poole