Как экспортировать схему базы данных в Oracle в файл дампа

У меня есть схема базы данных на сервере Oracle, установленном на машине Linux. Мне нужно экспортировать связанную с схемой информацию в файл дампа.

Как это сделать?

Ответ 1

Это зависит от какой версии Oracle? Для более старых версий требуется exp (экспорт), более новые версии используют expdp (data pump); exp был устаревшим, но он все еще работает большую часть времени.

Перед запуском обратите внимание, что Data Pump экспортируется в серверную "директорию" Oracle, которая является символическим местоположением Oracle, отображаемым в базе данных, в физическое местоположение. Может быть каталог по умолчанию (DATA_PUMP_DIR), проверьте, запросив DBA_DIRECTORIES:

  SQL> select * from dba_directories;

... и если нет, создайте один

  SQL> create directory DATA_PUMP_DIR as '/oracle/dumps';
  SQL> grant all on directory DATA_PUMP_DIR to myuser;    -- DBAs dont need this grant

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

 $ expdp system/manager schemas=user1 dumpfile=user1.dpdmp

Или указав конкретный каталог, добавьте directory=<directory name>:

 C:\> expdp system/manager schemas=user1 dumpfile=user1.dpdmp directory=DUMPDIR

С более старой утилитой экспорта вы можете экспортировать ее в рабочий каталог и даже на клиентскую машину, удаленную от сервера, используя:

 $ exp system/manager owner=user1 file=user1.dmp

Убедитесь, что экспорт выполнен в правильной кодировке. Если вы не настроили свою среду, кодировка клиента Oracle может не соответствовать кодировке DB, и Oracle сделает преобразование набора символов, что может и не быть тем, что вы хотите. Вы увидите предупреждение, если это так, то вы захотите повторить экспорт после установки переменной среды NLS_LANG, чтобы клиентская кодировка соответствовала кодировке базы данных. Это заставит Oracle пропустить преобразование кодировки.

Пример для американского UTF8 (UNIX):

 $ export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

Windows использует SET, например, используя японский UTF8:

 C:\> set NLS_LANG=Japanese_Japan.AL32UTF8

Подробнее о Data Pump здесь: http://docs.oracle.com/cd/B28359_01/server.111/b28319/dp_export.htm#g1022624