Expdp oracle параметры linux

Обновлено: 05.07.2024

Проблемы и их решения, с которыми встречаюсь лично я и мои коллеги.

Pages

Использование expdp / impdp в Oracle

На прошедшей недели стояла задача перенести базы данных с Oracle 11.1 на Oracle 11.2, при этом общий объем баз данных порядка 26 Gb (не много, но и не мало). Т.к. от других рабочих процессов отрываться было нельзя (а если все базы сворачивать локально старыми утилитами exp / imp было бы невозможно работать) решили изучить и воспользоваться новыми утилитами expdp / impdp.


Главная особенность данных утилит, что они не нагружают локальную станцию, а запускают job на сервере, и используют непосредственно ресурсы сервера БД. Информации по их использованию в интернете на русском языке очень мало, но в документации Oracle (как обычно) информации предостаточно. Вот пара ссылок на их официальное описание:

Описание всех параметров данных утилит лучше изучить в предыдущих ссылках.

А теперь поделюсь собственным опытом по их использованию.

Главный, на мой взгляд, недостаток данных утилит, это необходимость прав доступа на папки указанной в параметре DIRECTORY=data_pump_dir (по умолчанию параметр задается именно data_pump_dir). Также при переносе баз с сервера на другой сервер, приходится дампы руками копировать с одного сервера на другой.

Вот общий вид командной строки сворачивания БД, которую я использовал для выполнения собственной задачи:

expdp %1/%2@%3 SCHEMAS=%4 DIRECTORY=data_pump_dir DUMPFILE=%4.expdp LOGFILE=%4_exp.log EXCLUDE=GRANT COMPRESSION=NONE FULL=N JOB_NAME=backup

Теперь более подробно разберем входные параметры приведенной строки:

  1. %1 - имя пользователя Oracle, под которым будет производиться сворачивание БД
  2. %2 - пароль пользователя
  3. %3 - TNS имя сервера
  4. %4 - сворачиваемая БД

Т.к. мне необходимо было переносить данных с одного сервера на другой, то у меня стоит EXCLUDE=GRANT.

COMPRESSION=NONE поставил по привычке использования exp/imp.

JOB_NAME=backup данный параметр поставил по многочисленным советам в интернете. Оказывается данные утилиты не всегда правильно определяют job, под которым производить процессы сворачивания/разворачивания БД.

  1. %1 - имя пользователя Oracle, под которым будет разворачиваться БД
  2. %2 - пароль пользователя
  3. %3 - имя сервера
  4. %4 - имя дампа. В моем случае данный параметр совпадает с именем БД, которую мы свернули.
  5. %5 - имя новой БД

В данном импорте у меня имя свернутой БД не совпадает с именнем БД, в которую разворачиваем. Если этого не требуется, то достаточно удалить часть строки REMAP_SCHEMA=%4:%5. Остальные параметры, описаны выше.

Привет, сейчас мы с Вами рассмотрим технологию Oracle Data Pump, с помощью которой мы можем экспортировать данные в дамп и импортировать данные из дампа в СУБД Oracle. Эта технология подразумевает использование утилит expdp и impdp, которые заменяют традиционные exp и imp, и сегодня мы с Вами научимся использовать их для создания дампа базы данных и импорта данных из этого дампа.

Как Вы, наверное, уже догадались, сейчас речь пойдет о СУБД Oracle, а именно о технологии Oracle Data Pump и начнем мы, конечно же, с обзора данной технологии.

Что такое Oracle Data Pump?

Скриншот 1

Oracle Data Pump – это технология позволяющая экспортировать и импортировать данные и метаданные в СУБД Oracle Database в специальный формат файлов дампа.

Данная технология впервые появилась в версии 10g и включается во все последующие версии Oracle Database. Для экспорта и импорта данных до Oracle Data Pump, т.е. до версии 10g, использовались традиционные утилиты exp и imp, возможности которых в 10 и выше версиях сохранены в целях совместимости. Особенностью Oracle Data Pump является то, что экспорт и импорт данных происходит на стороне сервера, dmp-файл формируется на файловой системе сервера, а также главным преимуществом Oracle Data Pump перед традиционным способом экспорта и импорта данных является более быстрая выгрузка и загрузка данных.

В Oracle Data Pump для экспорта и импорта данных созданы новые серверные утилиты expdp и impdp. Формат файлов дампа (dmp) используемый в этих утилитах, несовместим с форматом, который используется в exp и imp.

Expdp – утилита для экспорта данных в СУБД Oracle Database в дамп.

Impdp – утилита для импорта данных в СУБД Oracle Database из дампа.

Утилиты expdp и impdp поддерживают несколько режимов работы:

Для того чтобы посмотреть подробную справку (описание параметров) по этим утилитам запустите их с параметром help=y, например

Примечание! Запуск утилит в операционной системе Windows запускается из командной строки. В случае если системный каталог bin СУБД Oracle не добавлен в переменную среды Path, то запускать утилиты нужно из данного каталога, т.е. предварительно перейдя в него (например, с помощью команды cd). Для демонстрации примеров ниже я использую Oracle Database Express Edition 11g Release 2 установленный на операционной системе Windows 7.

Пример создания дампа базы данных Oracle с помощью expdp

Для того чтобы создавать дампы в Oracle с помощью утилиты expdp предварительно необходимо определится с логической директорией, в которую Вы будете экспортировать дампы, т.е. где они будут храниться. Можно использовать стандартную директорию DATA_PUMP_DIR, но Вы, если хотите, можете создать новую, конкретно для Ваших целей отдельную директорию. Давайте создадим отдельный каталог для наших задач с экспортом и импортом данных, заодно и научимся создавать такие директории.

Сначала создаем каталог в файловой системе, например, я создал D:\OracleEX\ExportImport.

Затем уже создаем директорию в Oracle, для этого открываем SQL*Plus или SQLDeveloper и запускаем следующую команду (я запустил в SQL*Plus и директорию назвал ExportImport).

Скриншот 2

Чтобы посмотреть, какие директории уже созданы, можете использовать следующий запрос.

Теперь давайте перейдем непосредственно к экспорту. Я все действия выполнял от имени системного пользователя Oracle.

Создание дампа всей базы данных

Для того чтобы создать полный дамп базы данных выполните следующую команду в командной строке

Скриншот 3

  • system/Pa$$w0rd – это логин и пароль пользователя в СУБД;
  • FULL=Y – параметр, который указывает, что мы делаем полный экспорт базы данных;
  • directory=ExportImport – параметр указывает директорию, в которую мы будем выгружать дамп файл;
  • dumpfile=DumpFull.dmp – параметр для указания названия дамп файла;
  • logfile=ExportFull.log – параметр для указания названия лог файла экспорта данных.

Создание дампа на основе отдельной схемы базы данных

В большинстве случае все-таки, наверное, понадобится экспортировать отдельную, выбранную схему базы данных, а не всю БД. Для того чтобы выгрузить схему, указываем параметр SCHEMAS.

Скриншот 4

SCHEMAS=OracleUser – параметр, в котором мы указываем схему для экспорта, в нашем случае OracleUser.

Создание дампа на основе отдельных таблиц базы данных

Иногда нужно экспортировать только одну или несколько таблиц, для этого мы можем использовать параметр TABLES. В примере ниже мы экспортируем таблицу OracleTable в схеме OracleUser.

Скриншот 5

TABLES=OracleUser.OracleTable – это параметр, в котором мы указываем таблицу для экспорта (или несколько таблиц через запятую).

Пример импорта данных из дампа Oracle с помощью impdp

Сейчас давайте перейдем к импорту данных из дампа. Как Вы помните, для этих целей у нас существует утилита impdp.

Импорт схемы из дампа

Для импорта всей схемы запускаем утилиту impdp с параметром SCHEMAS. В случае если у Вас уже создана схема, которую Вы собираетесь импортировать, то ее предварительно нужно удалить. Для удаления схемы используйте следующий запрос в SQL*Plus или SQLDeveloper

Скриншот 6

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

Скриншот 7

  • system/Pa$$w0rd – это логин и пароль пользователя в СУБД;
  • SCHEMAS=OracleUser – параметр, который указывает, что мы хотим импортировать конкретную схему (в нашем случае OracleUser);
  • directory=ExportImport – параметр указывает директорию, в которой расположен файл дампа данных;
  • dumpfile=DumpSCHEMAS.dmp – параметр для указания названия дамп файла;
  • logfile=ImportSCHEMAS.log – параметр для указания названия лог файла импорта данных.

Импорт таблиц из дампа

Если Вы хотите импортировать одну или несколько таблиц, то можете использовать параметр TABLES, также как и при экспорте. В случае если таблица или таблицы уже созданы, т.е. существуют, то их необходимо или удалить вручную (DROP TABLE) или указать параметр TABLE_EXISTS_ACTION, который может принимать следующие значения:

Для примера давайте запустим impdp с параметром TABLE_EXISTS_ACTION=REPLACE, для того чтобы перезаписать существующую таблицу.

Скриншот 8

Заметка! Для изучения языка SQL как стандарта, чтобы его можно было использовать в любой СУБД, рекомендую почитать книгу «SQL код», в ней рассматриваются конструкции SQL, которые будут работать везде и не привязаны к какой-то конкретной СУБД.

Oracle Data Pump - новая, более быстрая и гибкая альтернатива утилитам "exp" и "imp", использовавшимся в предыдущих версиях Oracle. В дополнение к основным функциям импорта и экспорта, Data Pump предоставляет PL/SQL API и поддержку внешних таблиц.

Начало

Чтобы получить возможность работы с примерами, необходимо, для начала, разблокировать учётную запись SCOTT и создать объект-директорию, с которым нам предстоит работать:

Экспорт/импорт таблиц

Параметр "TABLES" используется для указания таблицы или таблиц, которые должны быть экспортированы. В следующем примере показан синтаксис экспорта и импорта таблиц:

Добавление параметра "TABLE_EXISTS_ACTION=APPEND" позволяет импортировать данные путём добавления в уже существующие таблицы.

Экспорт/импорт схем

Параеметр "OWNER", имевший место быть в exp, заменён на параметр "SCHEMAS", который используется для указания экспортируемой схемы. В следующем примере приведён синтаксис экспорта/импорта схемы:

Экспорт/импорт баз данных

Параметр "FULL" указывает, что требуется экспортировать базу данных полностью. Следующий пример демонстрирует синтаксис экспорта и импорта:

Дополнительная информация

В отличии от утилит exp и imp, все файлы Data Pump: и ".dmp", и ".log", - создаются на Oracle-сервере, а не на клиентском компьютере.

Все действия Data Pump выполняются множественными задачами (jobs) (server processes not DBMS_JOB jobs). Эти задачи управляются главным управляюшим процессом, который использует расширенную очередь (Advanced Queuing). Во время выполнения, создаётся и используется главным управляющим процессом таблица очереди, которая называется по имени задания. Таблица удаляется после успешного выполнения задания Data Pump. Задание и очередь могут быть названы на Ваше усмотрение с использованием параметра "JOB_NAME". Остановка клиентского процесса не останавливает связанное с ним Data Pump задание. Передача клиенту комбинации клавиш "Ctrl+C" во время выполнения задания остановит вывод на стандартное устройство вывода и переведёт в командную строку. Ввод "status" в этой командной строке позволить проследить за состоянием текущего задания:

Производительность Data Pump может быть улучшена использованием параметра "PARALLEL". Этот параметр следует использовать совместно с шаблоном "%U" в параметре "DUMPFILE" для разрешения создания или чтения множественных dump-файлов:

Параметры "INCLUDE" и "EXCLUDE" могут быть использованы для ограничения импорта/экспорта указанных объектов. Когда используется параметр "INCLUDE", в экспорт будут включены только указанные объекты:

При использовании параметра "EXCLUDE", все объекты, кроме указанных в параметре, будут включены в экспорт:

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

Data Pump API

Как только задание запущено, его статус можно проверить используя следующий запрос:

Внешние таблицы

У Oracle появилась поддержка технологий Data Pump, с помощью которых можно преносить данные во внешние таблицы. Драйвер доступа ORACLE_DATAPUMP может быть использован для выгрузки данных в экспорт-файл и последующей перезагрузке их. Выгрузка данных происходит, когда внешняя таблица создана с использованием кляузы "AS":

Затем данные могут быть запрошены так:

Синтаксис создания указателя на внешнюю таблицу в существующем файле аналогичен, но без кляузы "AS":

Опция "HELP=Y" заставит отобразить описание всех доступных параметров:


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

1- Import и Export в Oracle 11g

Начиная с Oracle 11 и далее Oracle использует синтаксис отличающийся от предыдущей версии Oracle чтобы импортировать (import) и экспортировать (export) данные. В целом есть 2 варианта для импорта/экспорта (import/export):

  1. Import/Export некоторые таблицы CHEMA.
  2. Import/Export полностью SCHEMA (включая объекты: table, view, function. )

1.1- Import/Export SCHEMA (11g)

Для начала вам нужно определить DBA Directory (Папку DBA, можно сказать папку управленияị DB) она прикрепляется к реальному пути к вашему диску. На самом деле вам нужно объявить один раз и можете использовать дальше.

Например я определю DBA Directory (Папку DBA) с названием MY_BACKUP_DIR прикрепляя к файлу C:/oraclebackup


Войти в SQL Plus используя user system:





DBA Directory создан с помощью user system. Только user с авторизацией DBA могут ее использовать. Вы так же можете дать авторизацию для использования этой DBA Directory другим пользователям.

Можете так же сделать запрос чтобы увидеть созданные до этого объекты DBA Directory и имеющиеся в Oracle.



1.1.1- Expdp

Использовать expdp чтобы экспортировать (export) полностью SCHEMA в файл dump.

Чтобы экспортировать (export) вам нужно открыть CMD и CD к папке BIN в Oracle.






Заметка: Вы можете экспортировать (export) несколько Schema одновременно в 1 файл dump. Например:

1.1.2- Impdp

Для начала вам нужно создать user learningsql2. Войти в SQL Plus:




В принципе вы только что создали пустую SCHEMA.

Далее мы импортируем (import ) из файла dump в только что созданную Schema. На самом деле в файле dump может быть одна или несколько SCHEMA. Когда вы импортируете (import) файл dump в определенную Schema, вам нужно указать источник SCHEMA в файле dump, и целевую SCHEMA.

Заметьте, что в ORACLE название SCHEMA так же является названием User.

Откройте CMD и CD в папку bin в Oracle:



  • Импорт из файла learningsql.DMP
  • Из источника Schema: learningsql (В файле dump)
  • К целевой Schema: learningsql2

Заметка: Вы можете не создавать до этого user learningsql2, команда impdb сама создаст этот user, но пароль не определен, вам нужно самим установить пароль.



View more Tutorials:

Это онлайн курс вне вебсайта o7planning, который мы представляем, он включает бесплатные курсы или курсы со скидкой.

Читайте также: