Как передать данные с помощью команд expdp и impdp?

29

Я новичок в Oracle, и я намерен перенести все данные и метаданные из одной схемы в другую в базе данных Oracle. Я планирую использовать datapump's expdpи impdpкоманды. У меня есть вопросы по этому поводу:

  • Могу ли я создать целевую схему без пользователя или я должен сначала создать пользователя (который также создает схему)?
  • Могу ли я выполнять expdpи impdpкоманды, используя учетную запись SYS (как sysdba)? Это предпочтительный метод?
  • Принимает ли этот оператор все объекты (данные и метаданные) из схемы и переносит их в другую схему?

    expdp \"/ as sysdba\" schemas=<schemaname> directory=dumpdir dumpfile=<schemaname>.dmp logfile=expdp_<schemaname>.log  

    Так является ли целевая схема точной копией исходной схемы после impdpкоманды?

jrara
источник

Ответы:

31

impdp создаст пользователя, если он еще не присутствует, так что вам не нужно беспокоиться об этом, если это не то, что вы хотите.

Не запускать impdbили expdpкак sysdba, делать это только в том случае, если служба поддержки Oracle запрашивает его при определенных обстоятельствах. Для этого используйте обычного пользователя - например, которому была назначена dbaроль. (Существуют [IMPORT|EXPORT]_FULL_DATABASEпривилегии специально для этого типа вещей, вам также необходимо предоставить доступ к объектам каталога Oracle).

Полный экспорт схемы (метаданные и содержимое) действительно будет выглядеть так:

expdp user/pass schemas=<schemaname> directory=dumpdir \
      dumpfile=<schemaname>.dmp \
      logfile=expdp_<schemaname>.log

Если вы хотите импортировать в другого пользователя / схему (целевая база данных может совпадать с исходной), вы можете использовать:

impdp user/pass schemas=schema1 directory=dumpdir \
      remap_schema=schema1:schema2 \
      dumpfile=schema1.dmp \
      logfile=impdp_schema2.log

Если вам не нужен полный импорт, вы можете установить некоторые фильтры как для данных, так и для метаданных. См. Фильтрация во время операций импорта .

В Руководстве по утилитам есть все детали, я настоятельно рекомендую прочитать хотя бы часть обзора.

Мат
источник
2

Для импорта усеченных таблиц, т.е. вы хотите, чтобы только данные были импортированы обратно в таблицу:

impdp user/pass TABLES=dept DIRECTORY=TEST_dir dumpfile=TEST.dmp logfile=expdpTEST.log TABLE_EXISTS_ACTION=REPLACE

Над моей таблицей есть то, deptчто я хочу импортировать. Я усек это раньше. Из дамп-файла, который есть TEST.dmp, и logfileкоторый expdpTEST.logя хочу, чтобы импортировались только данные (структура таблицы будет такой же, поэтому мы используем параметр TABLE_EXISTS_ACTION).

Если вы урезали 2 таблицы, например, empи dept, и empтаблица имеет dept_idвнешний ключ, то вам необходимо deptсначала импортировать таблицу, а затем empтаблицу, чтобы избежать ошибок во время импорта.

больше информации http://satya-dba.blogspot.in/2009/05/datapump.html

user3649154
источник