2010-08-15 17 views
2

J'essaie de faire une exportation de pompe de données pour les métadonnées sur un tablespace (COURSE). Suis-je sur la bonne voie? Mon répertoire de pompes de données a été créé comme suit:Le script Oracle Data Pump Export échoue

CREATE DIRECTORY dpump_dir AS '/mydata/data'; 

Veuillez garder à l'esprit que je suis débutant. Ce n'est peut-être pas la meilleure façon d'y parvenir, mais j'aimerais essayer de le faire fonctionner. Merci beaucoup.

declare 
     dp_handle  number; 
    begin 
     dp_handle := dbms_datapump.open(
     operation => 'EXPORT', 
     job_mode => 'TABLESPACE'); 

    dbms_datapump.add_file(
     handle => dp_handle, 
     filename => 'courses.dmp', 
     directory => 'dpump_dir'); 

    dbms_datapump.add_file(
     handle => dp_handle, 
     filename => 'courses.log', 
     directory => 'dpump_dir', 
     filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE); 

    dbms_datapump.metadata_filter(  
     handle => dp_handle, 
     name => 'TABLESPACE_EXPR', 
     value => '''COURSE'''); 

    dbms_datapump.start_job(dp_handle); 

    dbms_datapump.detach(dp_handle); 
    end; 
/ 

ERROR at line 1: 
ORA-39001: invalid argument value 
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79 
ORA-06512: at "SYS.DBMS_DATAPUMP", line 2926 
ORA-06512: at "SYS.DBMS_DATAPUMP", line 3162 
ORA-06512: at line 8 

Répondre

0

Essayez ceci:

dbms_datapump.metadata_filter(  
     handle => dp_handle, 
     name => 'TABLESPACE_EXPR', 
     value => '=''COURSE'''); 

"Je reçois toujours les mêmes messages d'erreur si"

Hmmm .... débogage à distance du code d'autres personnes est l'un des aspects les moins amusants de SO. Quoi qu'il en soit, donnons une autre idée.

Avez-vous un répertoire de système d'exploitation appelé /mydata/data sur lequel Oracle a des privilèges en lecture et en écriture? L'instruction CREATE DIRECTORY crée uniquement un pointeur, elle ne crée pas le répertoire du système d'exploitation sous-jacent.

+0

Salut, Merci pour la réponse. Je reçois toujours les mêmes messages d'erreur – relyt

1

Il semble que votre erreur se soit produite lors du premier appel ADDFILE.

Essayez de faire vos références de répertoire majuscules: répertoire => « DPUMP_DIR »

1

Il y a un certain nombre de raisons pour lesquelles cela pourrait échouer:

  1. Le fichier que vous voulez écrire (courses.dmp) ne déjà existent. Oracle ne remplacera pas le fichier. (Oui, le message d'erreur est assez boiteux)
  2. Le répertoire OS /mydata/data existe pas existe.
  3. /mydata/datane existe, mais Oracle n'a pas les nécessaires les droits pour accéder au répertoire
  4. Aucun de ce qui précède, mais l'utilisateur Oracle qui exécute le script n'a pas été accordé read, write sur dpump_dir

Si ces points ne vous aident pas, vous pouvez d'abord ouvrir (add_file) le fichier * .log, puis le fichier * .dmp. Espérons que Oracle écrira quelque chose de significatif dans le fichier * .log.