Янв 252011
 

Утилита DataPump появилась начиная с 10-й версии Oracle как замена устаревшим утилитам exp и imp в более ранних версиях. Она имеет больше возможностей, чем классические exp и imp, автоматически настраивает некоторые параметры, такие как размер буфера приёма/передачи, число потоков, etc. Одной из самых интересных возможностей DataPump является осуществление "перекачки" данных из одной базы данных в другую используя Database Link, что заметно упрощает импорт, если целевая и исходная базы находятся в одной сети.
Итак, задача: на исходной БД есть пользователь cube в табличном пространстве cube. Нужно перенести все объекты в новую базу в схему cube2 табличном пространстве cube2. Оба пользователя, исходный и целевой, не привилегированны.
Решение:
На исходной базе нужно временно дать пользователю роль EXP_FULL_DATABASE.

GRANT EXP_FULL_DATABASE TO cube;

На целевой базе также нужна некоторая подготовка:

-- Через этот database link и будут передаваться данные
CREATE PUBLIC DATABASE LINK test1 CONNECT TO cube IDENTIFIED BY cube USING 'test1';
-- Сюда impdp будет записывать лог импорта
CREATE DIRECTORY test1_log AS '/usr/oracle/test1/test1_log';
-- Дадим пользователю cube2 права на чтоение и запись в эту директорию:
GRANT READ, WRITE ON DIRECTORY test1_log TO cube2;

Теперь, собственно, импорт:

impdp cube2/cube2@test2 NETWORK_LINK=test1 REMAP_SCHEMA=cube:cube2 \
REMAP_TABLESPACE=cube:cube2 DIRECTORY=test1_log

Если импорт прошёл без ошибок, убедимся, что все объекты скопировались:

SELECT object_name, object_type FROM [email protected]
MINUS
SELECT object_name, object_type FROM user_objects;

Если запрос ничего не возвращает, то всё ok.

Теперь уберём за собой. Удалим dblink и директорию на целевой базе:

DROP PUBLIC DATABASE LINK test1;
DROP DIRECTORY test1_log;

и отнимем роль EXP_FULL_DATABASE на исходной:

REVOKE EXP_FULL_DATABASE FROM cube;

Кстати, краткую справку по утилитам можно получить, запустив их с параметром HELP=y:

impdp  HELP=y

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">

(обязательно)

(обязательно)