¿Cómo detener, reanudar o matar un proceso Data Pump?

Oracle-logo

En este articulo les quiero enseñar, cómo podemos tener un poco más de control sobre nuestros backups o importaciones generados con Data Pump.

En algunos casos, podemos tener la necesidad de detener o matar definitivamente nuestro procesos de backup o nuestras importaciones. Este, ya sea porque se requiere realizar una actividad de alta prioridad o alguna otra razón.

Tomando como ejemplo, la ejecucion de un expdp

expdp system directory=BKP dumpfile=expdp_$ORACLE_SID'_'$fecha.dmp logfile=expdp_$ORACLE_SID'_'$fecha.log full=y exclude=statistics

Si presionamos la combinación Ctrl+c desde la línea de comando con la cual ejecutamos nuestro expdp, entraremos a el modo interactivo de Data Pump

Export: Release 11.2.0.4.0 - Production on Tue Dec 15 11:50:47 2020

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
Password:

Connected to: Oracle Database 11g Release 11.2.0.4.0 - 64bit Production
Starting "SYSTEM"."SYS_EXPORT_FULL_01":  system/******** directory=BKP dumpfile=expdp_soyundba_15Dec2020_1027.dmp logfile=expdp_soyundba_15Dec2020_1027.log full=y exclude=statistics
Estimate in progress using BLOCKS method...
^C
Export>

A partir de este momento, estaremos realizando la interacción con el job de Data Pump. Teniendo en cuenta que cuando realizamos un export o import con Data Pump, se realiza automáticamente la creación de un job en la base de datos

También se puede presentar el caso, en el cual no ejecutemos directamente el expdp o impdp. Ya sea porque este se ejecutó a través del crontab u otro medio. Para estos casos, con la siguiente consulta, obtendremos el estado de los jobs

SQL> SELECT OWNER_NAME, JOB_NAME, OPERATION, JOB_MODE,
  STATE, ATTACHED_SESSIONS
FROM DBA_DATAPUMP_JOBS
WHERE JOB_NAME NOT LIKE 'BIN$%'
ORDER BY 1,2;

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


SQL>

Obteniendo el JOB_NAME, entonces podremos realizar la conexión a la consola de Data Pump

[oracle@soyundba ~]$ expdp system attach=SYS_EXPORT_FULL_01

Export: Release 11.2.0.4.0 - Production on Wed Dec 30 11:51:25 2020

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
Password:

Connected to: Oracle Database 11g Release 11.2.0.4.0 - 64bit Production

Job: SYS_EXPORT_FULL_01
  Owner: SYSTEM
  Operation: EXPORT
  Creator Privs: TRUE
  GUID: B7B2505DA94210CFE0539A27A8C06106
  Start Time: Wednesday, 30 December, 2020 11:51:09
  Mode: FULL
  Instance: soyundba
  Max Parallelism: 1
  EXPORT Job Parameters:
  Parameter Name      Parameter Value:
     CLIENT_COMMAND        system/******** directory=BKP dumpfile=expdp_soyundba_30Dec2020_1151.dmp logfile=expdp_soyundba_30Dec2020_1151.log full=y exclude=statistics
  State: EXECUTING
  Bytes Processed: 0
  Current Parallelism: 1
  Job Error Count: 0
  Dump File: /backup/soyundba/dpump/expdp_soyundba_30Dec2020_1151.dmp
    bytes written: 4,096

Worker 1 Status:
  Process Name: DW00
  State: EXECUTING
  Object Type: DATABASE_EXPORT/SYSTEM_PROCOBJACT/POST_SYSTEM_ACTIONS/PROCACT_SYSTEM
  Completed Objects: 4
  Total Objects: 4
  Worker Parallelism: 1

Export>

Detener Data Pump

Para detener nuestro proceso, ejecutaremos stop_job en la consola

Export> stop_job=immediate
Are you sure you wish to stop this job ([yes]/no): yes

[oracle@soyundba ~]$

Ahora validando con el query anterior, el estado del job, podremos observar que se encuentra en NOT RUNNING

SQL> /

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


SQL>

Reanudar Data Pump

Para reanudar el proceso, ejecutaremos continue_client en la consola

Export> continue_client
Job SYS_EXPORT_FULL_01 has been reopened at Wed Dec 30 12:42:05 2020
Restarting "SYSTEM"."SYS_EXPORT_FULL_01":  system/******** directory=BKP dumpfile=expdp_soyundba_30Dec2020_1213.dmp logfile=expdp_soyundba_30Dec2020_1213.log full=y exclude=statistics
Processing object type DATABASE_EXPORT/SCHEMA/PACKAGE/PACKAGE_SPEC

Al momento de reanudar, éste además continuará desde donde quedó y nos enseñará la continuidad del log

Validando con el query anterior, el estado del job, podremos observar que se encuentra en EXECUTING

SQL> /

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


SQL>

Podemos validar de igual manera el log del expdp, en este nos mostrará el momento en que se detuvo el Data Pumo y así mismo el momento en que se reanudo

Processing object type DATABASE_EXPORT/SCHEMA/TABLE/COMMENT
Processing object type DATABASE_EXPORT/SCHEMA/PACKAGE/PACKAGE_SPEC
Job "SYSTEM"."SYS_EXPORT_FULL_01" stopped due to fatal error at Wed Dec 30 12:14:00 2020 elapsed 0 00:00:38
Job SYS_EXPORT_FULL_01 has been reopened at Wed Dec 30 12:42:05 2020
Restarting "SYSTEM"."SYS_EXPORT_FULL_01":  system/******** directory=BKP dumpfile=expdp_soyundba_30Dec2020_1213.dmp logfile=expdp_soyundba_30Dec2020_1213.log full=y exclude=statistics
Processing object type DATABASE_EXPORT/SCHEMA/PACKAGE/PACKAGE_SPEC
Processing object type DATABASE_EXPORT/SCHEMA/PACKAGE/GRANT/OWNER_GRANT/OBJECT_GRANT

Matar Data Pump

Para matar el proceso, ejecutaremos kill_job en la consola

Export> kill_job
Are you sure you wish to stop this job ([yes]/no): yes

[oracle@soyundba ~]$

De este modo, matamos el proceso definitivamente, sin dejar ningún rastros.

Te invito a seguir consultando más articulos relacionados a Oracle dando clic aquí.

 

Acerca de JulianOrtiz0506

Soy administrador de bases de datos y desarrollador web, desde mis inicios en el mundo de la informática, he implementando proyectos personales y empresariales. Por consiguiente esto me ha permitido contar con una amplia calificación y destreza sobre mis áreas de conocimiento. Sobre todo suelo estar en constante aprendizaje, diariamente me estoy informando sobre nuevas tecnologías. Ya queme gusta estar actualizado en la tecnología de punta para todas las plataformas que me apasionan y con las cuales trabajo día a día.

Ver todas las entradas de JulianOrtiz0506 →

2 comentarios en «¿Cómo detener, reanudar o matar un proceso Data Pump?»

    1. Holas Antonio,
      Lo que puedes realizar es borrar directamente la tabla que se genera temporalmente con la ejecución del job datapump.
      Con la consulta que está el artículo (la anexo más abajo), obtienes el JOB_NAME y el OWNER, teniendo estos dos datos, te debes conectar con un usuario que tenga los privilegios y ejecutar el drop a la tabla.

      Ejemplo:
      drop table SYSTEM.SYS_EXPORT_FULL_01 purge;

      Query:
      SELECT OWNER_NAME, JOB_NAME, OPERATION, JOB_MODE,
      STATE, ATTACHED_SESSIONS
      FROM DBA_DATAPUMP_JOBS
      WHERE JOB_NAME NOT LIKE ‘BIN$%’
      ORDER BY 1,2;

       

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *