Cómo 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.
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:\export\DB\expDB.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
Hola.
Me ha resultado de mucho interés en el trabajo que estoy realizando actualmente.
Saludos.
It’s great that you are getting thoughts from this paragraph as well as from our discussion made at this time.