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';