Hoy vamos a ver otra de esas entradas útiles del día a día.
En la entrada eliminar datapumps fallidos vimos como borrar los trabajos de impdp/expdp que estaban en entado fallido. Pero ¿que ocurre si queremos detener un trabajo en ejecución ?
Lo primero que haremos es volver a usar la consulta para ver el estado de los trabajos.
SET lines 200
SELECT owner_name, job_name, operation, job_mode,
state, attached_sessions
FROM dba_datapump_jobs
ORDER BY 1,2;
Y vemos que tenemos un JOB en modo de ejecucion
OWNER_NAME JOB_NAME OPERATION JOB_MODE STATE ATTACHED
———- ——————- ——— ——— ———– ——–
SCOTT EXPORT_TABLA_1 EXPORT TABLE EXECUTING 0
SYSTEM EXPORT_DIARIA EXPORT FULL NOT RUNNING 0
Si lo que queremos es detener ese trabajo EXPORT_TABLA_1 de manera correcta, ejecutaremos:
SET serveroutput on
SET lines 100
DECLARE
h1 NUMBER;
BEGIN
-- Format: DBMS_DATAPUMP.ATTACH('[job_name]','[owner_name]');
h1 := DBMS_DATAPUMP.ATTACH('SEXPORT_TABLA_1','SCOTT');
DBMS_DATAPUMP.STOP_JOB (h1,1,0);
END;
/
Ejecutando la consulta que muestra los jobs de exports vemos que tenemos trabajos NOT RUNNING residuales, siempre podemos limpiar la tabla con el resultado de :
SELECT 'DROP TABLE '|| owner_name||'.'|| job_name ||';'
FROM dba_datapump_jobs
where STATE='NOT RUNNING';