Как создавать дампы в Oracle с помощью Data Pump



Если нужно перенести объекты схемы из одной базы в другую, то проще всего это сделать с помощью технологии Oracle Data Pump.

Прежде чем вникать в детали работы с Data Pump, давайте уточним: у нас есть физические резервные копии и логические дампы.

В физическую резервную копию включаются файлы данных (Data Files), в которых в виде блоков хранятся все данные Oracle.

Логический дамп содержит объекты БД (таблицы, индексы, процедуры, пакеты и т. д.) и другую информацию (привилегии пользователей, статистику и т.д.).

Логический дамп — это бинарный файл, который создаётся специальной утилитой экспорта. В последующем другой утилитой — импорта — из этого бинарного файла можно восстановить объекты схемы и данные.

Экспорт-импорт происходит на уровне объектов базы. т.е. работа происходит с определениями объектов (DDL) и данными, которые в них содержатся.

Логические дампы применяются главным образом для переноса данных из одной базы в другую, а также для миграции базы на другую платформу.

Также их удобно использовать для восстановления данных редко изменяемых таблиц. Например, когда пользователь ошибочно выполняет обновление или удаление строк.

До версии Oracle 10g существовали только утилиты экспорта-импорта (exp и imp). Они работали как на сервере, так и на клиенте Oracle. В версии 10g и более поздних версиях утилиты остались, но считаются устаревшими.

Начиная с версии 10g появилась технология Oracle Data Pump.

Особенность утилиты в том, что она работает только на сервере.

С помощью Oracle Data Pump можно:

  • либо создать один или несколько файлов логического дампа БД в директории на сервере
  • либо перенести данные напрямую из одной БД в другую через dblink.

По сравнению с оригинальными утилитами exp/imp технология Data Pump значительно более быстрая. Имеет более гибкие настройки. Может вызываться, как из командной строки (утилиты), так и из PL/SQL с помощью пакетов DBMS_DATAPUMP и DBMS_METADATA.

Для вызова Data Pump из командной строки используются утилиты expdp и impdp

В общем, сейчас уже нет необходимости использовать оригинальные утилиты exp/imp, кроме случая, когда у вас нет доступа к файловой системе сервера Oracle.


Экспорт в Oracle Data Pump


Data Pump Export может работать в 5-ти режимах:

  1. Full Mode — выгрузка всей БД.
  2. Schema Mode — выгрузка выбранных схем.
  3. Table Mode — выгрузка отдельных таблиц.
  4. Tablespace Mode — выгрузка выбранных табличных пространств.
  5. Transportable Tablespace Mode — экспорт табличного пространства для переноса на другой сервер.

Пример вызова Data Pump Export в "Table Mode":

> expdp hr TABLES=employees DIRECTORY=DPUMP_DIR1 DUMPFILE=employees.dmp


Файлы дампа создаются в директории, на которую указывает объект базы данных Directory. По умолчанию параметр DIRECTORY=DATA_PUMP_DIR.



Если вы хотите выгрузить в другую директорию, то вам нужно:

  1. Cоздать другую directory с помощью команды (CREATE DIRECTORY .. AS '...')
  1. Указать ее в параметре DIRECTORY=dpump_dir1 или перед именем файла дампа DUMPFILE=dpump_dir1:employees.dmp.

Экспорт может производиться не из текущей базы данных, а из удаленной базы по dblink. Для этого нужно указать существующий dblink на базу данных — источник, используя параметр NETWORK_LINK.

> expdp hr TABLES=employees DIRECTORY=DPUMP_DIR1 DUMPFILE=employees.dmp NETWORK_LINK=S101




Интересные возможности:

Во-первых, можно создавать задания фильтры по метаданным, т.е. отбирать для экспорта объекты базыд данных как по типу, так и по имени. Для этого используются параметры: CONTENT, INCLUDE, EXCLUDE.

Во-вторых, можно выполнить фильтрацию строк выгружаемых таблиц с помощью параметра QUERY.


Импорт в Oracle Data Pump


Теперь перейдем к импорту.

Аналогично экспорту Data Pump Import также имеет 5 режимов:

  1. Full Mode — загрузка всего дампа.
  2. Schema Mode — загрузка выбранных схем.
  3. Table Mode — загрузка отдельных таблиц.
  4. Tablespace Mode — загрузка выбранных табличных пространств.
  5. Transportable Tablespace Mode — импорт табличного пространства.

Например, команда для полной загрузки дампа:

> impdp hr FULL=Y DIRECTORY=DPUMP_DIR1 DUMPFILE=employees.dmp


По-умолчанию выставлен параметр FULL=YES, то есть будет загружено все содержимое файла дампа. Но вы, также как и при экспорте, можете использовать параметры CONTENT, INCLUDE, EXCLUDE, QUERY для выбора нужных объектов и данных для загрузки.



Если при импорте вы указываете параметр NETWORK_LINK, то данные будут загружаться по указанному dblink напрямую из базы данных источника. В этом случае указывать файл дампа не нужно, а директория будет указывать только на размещение лога импорта.

> impdp hr TABLES=employees DIRECTORY=DPUMP_DIR1 NETWORK_LINK=S101




Итак: технология Oracle Data Pump позволяет быстро переносить данные из одной базы данных в другую как через файлы (дампы), так и напрямую по сети.

И конечно, создаваемые дампы могут использоваться и как резервные копии, особенно при небольших размерах базы данных. Но нужно учитывать следующее: если во время экспорта данные изменялись пользователями, то данные таблиц в дампе могут оказаться несогласованными.

Нюансы создания резервных копий базы дынных Oracle — это отдельная тема, которую рассмотрим в следующий раз.


Сергей Греховодов,
автор курсов по обучению Oracle





Опубликован: 02 декабря 2014, 09:35


Похожие статьи:

  1. Как и чем создать Backup в Oracle

    Чтобы после сбоя в системе (например, отказа жесткого диска) восстановить базу нужно иметь под рукой резервную копию. (Нет резервной копии — прощай работа )) Чем свежее копия, тем лучше. Более того: резервная копия базы должна быть полной и непротиворечивой.

  2. Как в Oracle выбрать первые N записей

    Если в таблице много записей, то порой достаточно выбрать первый десяток. В других СУБД для этого изначально были специальные конструкции в языке SQL. В Oracle всё это появилось гораздо позже. Есть несколько популярных способов.

  3. Сколько стоит сделать резервную копию оракловой базы?

    Умеете делать резервную копию оракловой базы? Вопрос далеко-далеко не праздный (если вы уже знаете, как делать копию, то, наверное, догадываетесь, о чём пойдёт речь, правильно — о времени). Тема резервного копирования для администраторов оракла — одна из ключевых.

Комментарии к этой заметке больше не принимаются.