Янв 282013
 

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

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

SELECT 
	v.sid,
	v.serial#,
	v.program,
	v.username,
	v.blocking_session,
	v.final_blocking_session,
	v.event,
	d.job_name,
	d.inst_id,
	d.session_type
FROM v$session v, dba_datapump_sessions d
WHERE v.saddr = d.saddr;

Если процесс экспорта/импорта идёт достаточно давно, то имеет смысл посмотреть v$session_longops для приблизительной оценки времени (ненадёжный способ, т.к. в v$session_longops попадает далеко не всё):

SELECT 
	username,
	opname,
	target_desc,
	sofar,
	totalwork,
	message 
FROM v$session_longops
WHERE sid IN 
(
	SELECT v.sid
	FROM v$session v, dba_datapump_sessions d
	WHERE v.saddr = d.saddr
);

 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="">

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

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