Янв 282013
 

Утилита DataPump работает немного не так, как старинные exp/imp. В отличие от них, она не просто открывает сессию, по которой выкачивает/заливает данные, но создаёт несколько серверных процессов (они называются DataPump jobs, но путать их с заданиями, запускаемыми с помошью пакета dbms_job не стоит, тут другой механизм). Кстати, именно поэтому если убить процесс expdp/impdp командой kill -9, то сессии DataPump всё равно останутся в базе и могут помешать повторному запуску утилиты.
Иногда бывает необходимо убедиться, что сессии не подвисли и процесс перекачки данных идёт нормально. Раньше можно было просто поискать в v$session записи с полем program, содержащим строку 'imp%' или 'exp%' соответственно, но теперь всё немного хитрее. Для мониторинга сессий DataPump есть представление dba_datapump_sessions.

Вот так можно определить, на каком событии висят сессии DataPump и кто их блокирует: Continue reading »

Янв 252011
 

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