Управление и манипулирование данными. Инструментальные средства экспорта и импорта

Страницы работы

Фрагмент текста работы

Управление и манипулирование данными

Учебный центр информационных технологий «Информатика

Содержание лекции №6:

  • Экспорт и импорт данных
  • Инструментальные средства экспорта и импорта
  • Использование утилиты Datapump
  • Использование утилиты SQL*loader
  • Внешние таблицы

Недостатки традиционного экспорта/импорта (утилиты exp/imp)

  • Не масштабируется для больших БД
  • Медленная выгрузка и загрузка данных, не распараллеливается
  • Трудности в мониторинге процессов
  • экспорта/импорта
  • Практически невозможно встраивать в приложения (нет API)
  • Тяжело сопровождать

Что такое ORACLE Datapump

  • Технология экспорта/импорта данных и метаданных
  • СУБД Oracle Database 10g/11g
  • Замена традиционных утилит экспорта/импорта (exp и imp)
  • Новая серверная инфраструктура и утилиты (expdp и impdp)
  • Имеется документированный API для разработчиков
  • Много новых возможностей по сравнению с утилитами
  • exp и imp
  • Утилиты exp/imp оставлены в целях совместимости

Утилиты Oracle Datapump

  • expdp – для экспорта, impdp – для импорта
  • Расположены в $ORACLE_HOME/bin
  • Большинство параметров аналогичны параметрам в exp/imp
  • Формат dmp-файлов не совместим с форматом exp/imp !
  • Совместимость формата Datapump для всех версий СУБД начиная с 10.1 (10.2 и 12.1)

Архитектура Oracle Datapump

  • Инфраструктура для поддержки “тонкого клиента”
  • Экспорт/импорт происходит на сервере
  • dmp-файл формируется на файловой системе сервера
  • Клиент только управляет процессами экспорта/импорта
  • Поддержка параллельности

Поддержка параллельности

  • Есть только в Oracle Enterprise Edition
  • Поддерживается и для выгрузки, и для
  • загрузки
  • Динамический уровень параллелизма
  • Действует как на уровне одной таблицы/разделов, так и на уровне нескольких таблиц

Архитектура Oracle Datapump

EXPDP – Клиентский интерфейс к утилите Data Pump Export. IMPDP –Клиентский интерфейс к утилите Data Pump Import. Grid Control Interface – WEB интерфейс предоставляющий доступ к DBMS_DATA_PUMP PL/SQL package. Custom Interface – Позволяет перемещать сложные модели данных.

Возможности Oracle Datapump

  • Рестарт и остановка экспорта/импорта на произвольной
  • точке:
  • Master table;
  • По команде или по ошибке;
  • Старт с предыдущей точки останов;
  • Асинхронный запуск;
  • Гибкий выбор объектов.
  • Трансформация DDL при импорте:
  • Замена имен схемы, файлов данных, табличных пространств;
  • Включать/не включать параметры
  • хранения (storage clause);
  • Генерация нового OID для объектных типов.

Возможности Oracle Datapump

  • Предварительная оценка размера dmp-файла
  • Детальный мониторинг с любого места % выполнения
  • Детальный лог
  • Интерфейс в OEM
  • Сжатие (только метаданные)

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

  • Data Pump предоставляет возможность загрузки одной БД из другой (сетевой импорт) и выгрузки данных из удалённой БД (сетевой экспорт). И в том, и в другом случае используются связи БД.
  • Преимущества:
    • Импорт по сети -Из одной БД в другую на “лету”: без промежуточного dmp-файла
    • Экспорт по сети из БД в режиме “только для чтения”

DB2

DB1

dblink

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

  • При сетевом импорте вызовы DBMS_Metadata отсылаются на удалённый узел, а результаты их выполнения возвращаются на локальный узел, где и используются для создания объектов. Данные перегружаются операторами INSERT…SELECT с хинтами для прямого доступа. Таким образом, сетевой импорт фактически объединяет операции экспорта и импорта в одну без промежуточного создания дамп-файлов.
  • Задание Data Pump не может быть запущено на БД, открытой в режиме “только-для-чтения”, так как в такой БД нет возможности создать и вести мастер-таблицу, AQ-очереди и т.п. Однако сетевой экспорт позволяет решить эту проблему. При сетевом экспорте все процессы и мастер-таблица создаются в локальной БД, а чтение данных выполняется из удалённой БД. Перемещение данных при сетевом экспорте выполняется только через внешние таблицы.
  • Режим сетевой операции задаётся параметром командной строки NETWORK_LINK или в вызове API open.

Необходимые привилегии

  • Без роли EXP_FULL_DATABASE/IMP_FULL_DATABASE можно экспортировать/импортировать только объекты собственной схемы и выполнять мониторинг своих заданий.
  • Пользователи, имеющие роли EXP_FULL_DATABASE и IMP_FULL_DATABASE, могут подсоединяться и управлять выполнением заданий других пользователей, экспортировать/импортировать объекты из других схем и объекты, не принадлежащие схемам (сами определения схем, табличные пространства, системные привилегии, планы ресурсов и т.п.).

Режимы экспорта/импорта

  • Экспорт и импорт Data Pump могут выполняться в одном из следующих режимов:
    • FULL – вся БД (при импорте – всё содержимое набора дамп-файлов)
    • SCHEMAS – указанные схемы и все объекты в них, включая определения самих схем
    • TABLES – указанные таблицы (секции) и все зависимые от них объекты (индексы, триггеры, ограничения целостности и т.д.)
    • TABLESPACES – таблицы, любая часть которых содержится в указанных табличных пространствах, и все зависимые от них объекты
    • TRANSPORTABLE_TABLESPACES – перемещение табличных пространств.

Использование Oracle Datapump Экспорт

  • Создаем директорию в СУБД для dmp-файлов
  • SQL> CREATE DIRECTORY dump_dir AS ‘/backup/oradata’;
  • Выдаем привилегии на директорию
  • SQL> GRANT READ,WRITE ON DIRECTORY dump_dir TO scott;
  • Выполняем экспорт
  • C:\app>EXPDP scott/tiger@mytestdb TABLES=employees DUMPFILE=dump_dir:employees.dmp NOLOGFILE=y

Oracle Datapump API

  • Позволяет встраивать экспорт/импорт прямо в
  • приложения
  • Нет необходимости разрабатывать собственные механизмы экспорта/импорта
  • Полный контроль над процессами экспорта/импорта
  • Возможно копирование dmp-файла с сервера на клиент, или c клиента на сервер (как BFILE blob) через OCI,ODP.NET, JDBC

Oracle Datapump API PL/SQL-пакет DBMS_DATAPUMP

  • Представлено в виде встроенного пакета
  • DBMS_DATAPUMP
  • Позволяет сделать экспорт/импорт прямо из
  • приложения
  • Экспорт/импорт возможен как в синхронном, так и в асинхронном режиме
  • Возможности по контролю над статусом процессов
  • экспорта/импорта:
  • Процент завершения;
  • Число полученных байт;
  • Состояние задания;
  • … … … …

Пример экспорта

-- определяем задание на экспорт v_xHandle := dbms_datapump.open(operation => 'EXPORT', job_mode => 'SCHEMA', job_name => ‘MY_EXPORT’); -- указываем dmp-файл dbms_datapump.add_file(handle => v_xHandle, filename => ‘scott.dmp’, directory => ‘dump_dir’, Filetype => dbms_datapump.KU$_FILE_TYPE_DUMP_FILE); -- указываем log-файл dbms_datapump.add_file(handle => v_xHandle, filename => ‘scott_dmp.log’, directory => ‘dump_dir’, filetype => dbms_datapump.KU$_FILE_TYPE_LOG_FILE); -- запускаем задание dbms_datapump.start_job(v_xHandle); -- уничтожаем задание dbms_datapump.detach(v_xHandle);

Пример импорта

-- определяем задание на импорт v_xHandle := dbms_datapump.open(operation => 'IMPORT', job_mode => 'FULL', job_name => ‘MY_IMPORT'); -- указываем dmp-файл dbms_datapump.add_file(handle => v_xHandle, filename => ‘scott.dmp’, directory => ‘dump_dir’); -- импортируем данные в другое табличное пространство dbms_datapump.metadata_remap(handle => v_xHandle, name => 'REMAP_TABLESPACE', old_value => ‘USERS', value => ‘SCOTT_DATA'); -- запускаем задание dbms_datapump.start_job(v_xHandle); -- уничтожаем задание dbms_datapump.detach(v_xHandle);

Контроль выполнения экспорта/импорта

declare v_xJobState varchar2(32); v_xJobStatus ku$_JobStatus; v_xStatus ku$_Status; begin dbms_datapump.get_status(v_xHandle, dbms_datapump.ku$_status_job_status, -1, v_xJobState, v_xStatus); v_xJobStatus := v_xStatus.job_status; dbms_output.put_line(‘Status => ’ || v_xJobState); dbms_output.put_line(‘Done % => ’ || v_xJobStatus.percent_done); End;

Детальный выбор данных

  • Data Pump позволяет установить фильтры и на выгружаемые/загружаемые данные. При этом будет выполняться экспорт/импорт только части данных.
  • Фильтр данных устанавливается в виде SQL-фразы. SQL-фраза – это обычно условие WHERE, но можно использовать, например, и ORDER BY. Использование ORDER BY при экспорте позволяет получить отсортированный дамп-файл и затем импортировать данные в порядке сортировки.
  • Для установки фильтров данных используется параметр командной строки

Похожие материалы

Информация о работе