Suspender, reanudar o matar un proceso Datapump

Datapump es una versión mejorada de las utilidades export e import, que Oracle ha introducido en su versión 10g. Pero no voy a utilizar este post para explicar qué es o cómo usar Datapump, sino para cuando nos encontramos en la situación de haber lanzado un proceso de export o import con datapump y necesitamos suspenderlo o matarlo.

Una característica de Datapump es que podemos tener mucho más control del proceso de export/import,  por ejemplo.

Imaginemos que lanzamos el siguiente trabajo de exportación:

expdp system@db full=Y dumpfile=dump:expDB.dmp logfile=dump:expDB.LOG job_name=jobdb

Puede darse el caso que queramos suspender el proceso porque necesitamos ejecutar otra operación urgentemente y no queremos que ningún proceso auxiliar nos pueda afectar en el rendimiento. O simplemente queremos suspender el proceso desde la máquina en la que nos encontramos y continuarlo desde nuestra casa, por ejemplo.

Si pulsamos ctrl+c desde la línea de comandos, entraremos en el modo interactivo de datapump “EXPORT>” y a partir de este momento podremos interactuar con algún job de Datapump. Esto es así dado que cuando un export o import datapump es lanzado, automáticamente se crea un JOB.

Como podemos ver en el anterior ejemplo de export, le hemos asignado un nombre al JOB generado, para poder localizarlo fácilmente y poder interactuar con él. Podemos seguirlo a través de la siguiente sentencia:

SQL> select * from dba_datapump_jobs;

Los JOB pueden tener los siguientes estados:

  • Defining: el trabajo acaba de iniciarse y no hay proceso de trabajo activo todavía.
  • Executing: el trabajo está ejecutándose.
  • Idling: el trabajo ha sido suspendido mientras se ejecutaba.
A continuación presentaré un ejemplo completo con un expdp:

Lanzar export DATAPUMP

D:>expdp system@db full=Y dumpfile=dump_files1:expDB.dmp logfile=dump_files1:expDB.LOG

Export: Release 10.2.0.4.0 – Production on Viernes, 24 Junio, 2011 13:41:54
Copyright (c) 2003, 2007, Oracle. All rights reserved.
Contrase±a:

Conectado a: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 – Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Iniciando “SYSTEM”.”SYS_EXPORT_FULL_01″: system/********@DB FULL=Y DUMPFILE=dump_files1:expDB.dmp LOGFILE=dump_files1:expDB.LOG
Estimaci¾n en curso mediante el mÚtodo BLOCKS…
Procesando el tipo de objeto DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
Estimaci¾n total mediante el mÚtodo BLOCKS: 5.436 GB
Procesando el tipo de objeto DATABASE_EXPORT/TABLESPACE
Procesando el tipo de objeto DATABASE_EXPORT/SYS_USER/USER
Procesando el tipo de objeto DATABASE_EXPORT/SCHEMA/USER
Procesando el tipo de objeto DATABASE_EXPORT/ROLE
Procesando el tipo de objeto DATABASE_EXPORT/GRANT/SYSTEM_GRANT/PROC_SYSTEM_GRANT
Procesando el tipo de objeto DATABASE_EXPORT/SCHEMA/GRANT/SYSTEM_GRANT
Procesando el tipo de objeto DATABASE_EXPORT/SCHEMA/ROLE_GRANT
Procesando el tipo de objeto DATABASE_EXPORT/SCHEMA/DEFAULT_ROLE
Procesando el tipo de objeto DATABASE_EXPORT/SCHEMA/TABLESPACE_QUOTA
Procesando el tipo de objeto DATABASE_EXPORT/RESOURCE_COST
Procesando el tipo de objeto DATABASE_EXPORT/SCHEMA/DB_LINK
Procesando el tipo de objeto DATABASE_EXPORT/TRUSTED_DB_LINK
Procesando el tipo de objeto DATABASE_EXPORT/SCHEMA/SEQUENCE/SEQUENCE
Procesando el tipo de objeto DATABASE_EXPORT/DIRECTORY/DIRECTORY
Procesando el tipo de objeto DATABASE_EXPORT/DIRECTORY/GRANT/OWNER_GRANT/OBJECT_GRANT
Procesando el tipo de objeto DATABASE_EXPORT/CONTEXT

Pulso CTRL+C

Al pulsar ctrl+c, el trabajo no se parará, continuará su ejecución y podremos tomar el control sobre él, para suspenderlo, matarlo o realizar alguna tarea. Podemos ver en todo momento el estado del trabajo conectándonos a una consola SQL y realizando la siguiente consulta:

SQL> SELECT owner_name as owner, job_name, operation, job_mode,
2 state, attached_sessions
3 FROM dba_datapump_jobs
4 WHERE job_name NOT LIKE ‘BIN$%’
5 ORDER BY 1,2

OWNER  JOB_NAME                        OPERATION JOB_MODE STATE             ATTACHED_SESSIONS
——————————————————————————————————————————————-
SYSTEM SYS_EXPORT_FULL_01     EXPORT        FULL          EXECUTING                                       1

Suspender un trabajo DATAPUMP

Para suspender el trabajo debemos conectarnos a la consola de Datapump con el nombre del JOB que queramos interactuar:

D:>expdp system@db attach=SYS_EXPORT_FULL_01

Export> stop_job=immediate
Seguro que desea parar este trabajo ([sÝ]/no)?: s
D:>

SQL> SELECT owner_name as owner, job_name, operation, job_mode,
2 state, attached_sessions
3 FROM dba_datapump_jobs
4 WHERE job_name NOT LIKE ‘BIN$%’
5 ORDER BY 1,2

OWNER  JOB_NAME                       OPERATION  JOB_MODE   STATE             ATTACHED_SESSIONS
——————————————————————————————————————————————-
SYSTEM SYS_EXPORT_FULL_01     EXPORT        FULL             NOT RUNNING                                 0

Volver a tener de nuevo el control sobre el JOB:

D:>expdp system@DB attach=SYS_EXPORT_FULL_01

Export: Release 10.2.0.4.0 – Production on Viernes, 24 Junio, 2011 13:52:47
Copyright (c) 2003, 2007, Oracle. All rights reserved.
Contrase±a:
Conectado a: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 – Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Trabajo: SYS_EXPORT_FULL_01
Propietario: SYSTEM
Operaci¾n: EXPORT
Privilegios de Creador: FALSE
GUID: 584C6D09DF314580A08F23F02BA12EC7
Hora de Inicio: Viernes, 24 Junio, 2011 13:52:54
Modo: FULL
Instancia: dfpporta
Mßximo de Paralelismo: 1
EXPORT Parßmetros de Trabajo:
Nombre de Parßmetro Valor de Parßmetro:
CLIENT_COMMAND system/********@DB FULL=Y DUMPFILE=dump_files1:expDB.dmp LOGFILE=dump_files1:expDB.LOG
Estado: IDLING
Bytes Procesados: 0
Paralelismo Actual: 1
Recuento de Errores de Trabajo: 0
Archivo de Volcado: G:exportDBexpDB.dmp
bytes escritos: 4.096
Estado de Worker 1:
Estado: UNDEFINED
Esquema del Objeto: USER_DB
Nombre del Objeto: CAMPO_TABLE_PK
Tipo de Objeto: DATABASE_EXPORT/SCHEMA/TABLE/INDEX/INDEX
Objetos Terminados: 1.641
Total de Objetos: 1.641
Paralelismo de Worker: 1

Export>

OWNER    JOB_NAME                   OPERATION     JOB_MODE   STATE          ATTACHED_SESSIONS
——————————————————————————————————————————————-
SYSTEM SYS_EXPORT_FULL_01 EXPORT           FULL             IDLING                                         0

Continuamos con el trabajo de export:

Export> CONTINUE_CLIENT

 Matar el trabajo DATAPUMP definitivamente sin que quede rastro

Export> KILL_JOB
Seguro que desea parar este trabajo ([sÝ]/no)?: s

[twitter-follow screen_name=’moikmeg’]

3 Comments

  • Antonio

    13/07/2011

    Hola.
    Me ha resultado de mucho interés en el trabajo que estoy realizando actualmente.
    Saludos.

    Reply
  • http://mclinked.com

    20/01/2013

    It’s great that you are getting thoughts from this paragraph as well as from our discussion made at this time.

    Reply
  • andrea

    25/02/2016

    Idolo cuando alguien hace un blog asi hay que hacerle un monumento

    Reply

Deja un comentario