Сбой сценария экспорта Oracle Data Pump - PullRequest
3 голосов
/ 15 августа 2010

Я пытаюсь выполнить экспорт данных для метаданных в табличное пространство (COURSE).Я на правильном пути?Моя директория прокачки данных была создана как:

CREATE DIRECTORY dpump_dir AS '/mydata/data';

Пожалуйста, помните, что я новичок.Это может или не может быть лучшим способом для этого, но я хотел бы попытаться заставить это работать.Большое спасибо.

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

Ответы [ 3 ]

2 голосов
/ 03 февраля 2015

Существует ряд причин, по которым это может не сработать:

  1. Файл, который вы хотите записать (courses.dmp), уже существует . оракул не переопределит файл. (Да, сообщение об ошибке довольно хромое)
  2. В каталоге ОС /mydata/data нет .
  3. /mydata/data существует , но у Oracle нет необходимых права на доступ к каталогу
  4. Ничего из вышеперечисленного, но пользователь Oracle, который запускает сценарий, не был предоставлено read, write на dpump_dir

Если эти пункты не помогают, вы можете сначала открыть (add_file) файл * .log, , а затем файл * .dmp. Надеемся, что Oracle напишет что-то значимое в файл * .log.

1 голос
/ 16 августа 2010

Похоже, ваша ошибка происходит при первом вызове ADDFILE.

Попробуйте сделать ссылки на каталог в верхнем регистре: directory => 'DPUMP_DIR'

0 голосов
/ 15 августа 2010

Попробуйте это:

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

"Я все еще получаю те же сообщения об ошибках, хотя"

Хммм .... Удаленная отладка других людейкод является одним из наименее забавных аспектов SO.В любом случае, давайте дадим еще одну догадку.

Есть ли у вас каталог ОС с именем /mydata/data, для которого Oracle имеет права на чтение и запись?Оператор CREATE DIRECTORY только создает указатель, но не создает базовый каталог ОС.

...