Якщо потрібно перенести об'єкти схеми з однієї бази в іншу, то простіше за все це зробити за допомогою технології 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-ти режимах:
- Full Mode - вивантаження всієї БД.
- Schema Mode - вивантаження обраних схем.
- Table Mode - вивантаження окремих таблиць.
- Tablespace Mode - вивантаження обраних табличних просторів.
- Transportable Tablespace Mode - експорт табличного простору для перенесення на інший сервер.
Приклад виклику Data Pump Export в "Table Mode":
> Expdp hr TABLES = employees DIRECTORY = DPUMP_DIR1 DUMPFILE = employees.dmp
Файли дампа створюються в директорії, на яку вказує об'єкт бази даних Directory. За замовчуванням DIRECTORY = DATA_PUMP_DIR.
Якщо ви хочете вивантажити в іншу директорію, то вам потрібно:
- Створена іншу directory за допомогою команди (CREATE DIRECTORY. AS '.')
- Вказати її в параметрі 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 режимів:
- Full Mode - завантаження всього дампа.
- Schema Mode - завантаження обраних схем.
- Table Mode - завантаження окремих таблиць.
- Tablespace Mode - завантаження обраних табличних просторів.
- 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 - це окрема тема, яку розглянемо наступного разу.