Datapump em modo interativo

Download database 150x150 Datapump em modo interativo
No momento que efetuamos um export ou import convencional geralmente temos que tomar alguns cuidados:

Um deles é colocar o procedimento de export dentro de um shell script e por em nohup, para evitar uma queda do meu terminal linux ssh ou wts e que o processo seja abortado.

Mas com o DataPump isso não há mais necessidade. Todo processo executado estará atachado dentro do oracle, melhor ainda falando o processo será um job interno em segundo plano que fará o procedimento de impor ou export.

Isso quer dizer que no momento que começar o processo de export ou import podemos efetuar o Ctrl+C, sair da conexão sem preocupação, mas anote o seu ATTACH para depois continuar acompanhando o processo.

Fiz uma pequena demonstração desde o inicio de um Export DataPump:


Criei um diretorio para meu exemplo:

SQL> create directory bkpdp as '/ora01/backup/' ;

Directory created.

Feito o diretorio começarei a efetuar o meu export datapump de um owner.

$ expdp system/oracle11g directory=bkpdp dumpfile=scot.dp logfile=scot.log flashback_time=\"sysdate\" schemas=scot

Export: Release 11.2.0.2.0 - Production on Wed Sep 28 08:40:19 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
Connected to: Oracle Database 11g Release 11.2.0.2.0 - Production
With the Real Application Clusters and Automatic Storage Management options
Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01":  system/******** directory=bkpdp dumpfile=scot.dp logfile=scot.log flashback_time="sysdate" schemas=scot
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

Export> exit

E nesse ponto já iniciado o processo posso simplesmente efetuar o Ctrl+C para sair do export datapump porem o processo não será abortado. Como pode ser visto ele iniciou um job chamado SYSTEM.SYS_EXPORT_SCHEMA_01 que este job pode ser acompanhado a qualquer momento.

Porem, caso não tenhas anotado o nome do job conecte no banco e dê uma olhadinha na view dba_datapump_jobs

SQL>select * from dba_datapump_jobs

OWNER_NAME                     JOB_NAME                       OPERATION                      JOB_MODE                       STATE                              DEGREE ATTACHED_SESSIONS DATAPUMP_SESSIONS
------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ ---------- -----------------	-----------------
SYSTEM                         SYS_EXPORT_SCHEMA_01           EXPORT                         SCHEMA                         EXECUTING                               1                 1                 3

Agora contendo em mão o job_name do seu datapump pode acompanhar via DataPump o status do processo, outro detalhe é que podes ver pela view o STATE do processo, muito importante.

Para acompanhar o processo via DataPump, conecte no servidor via linha de comando e execute

$ expdp attach=SYS_EXPORT_SCHEMA_01

Export: Release 11.2.0.2.0 - Production on Wed Sep 28 08:42:33 2011

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

Username: system/senha

Connected to: Oracle Database 11g Release 11.2.0.2.0 - Production
With the Real Application Clusters and Automatic Storage Management options

Job: SYS_EXPORT_SCHEMA_01
  Owner: SYSTEM
  Operation: EXPORT
  Creator Privs: TRUE
  GUID: ADFEDB7524E8B512E040A8C0290A0EF4
  Start Time: Wednesday, 28 September, 2011 8:40:34
  Mode: SCHEMA
  Instance: tkrac11g1
  Max Parallelism: 1
  EXPORT Job Parameters:
  Parameter Name      Parameter Value:
     CLIENT_COMMAND        system/******** directory=bkpdp dumpfile=scot.dp logfile=sco.log flashback_time="sysdate" schemas=scot
     FLASHBACK_TIME        11-SEP-28 08:40:36 AM
  State: EXECUTING
  Bytes Processed: 0
  Current Parallelism: 1
  Job Error Count: 0
  Dump File: /ora01/backup/scot.dp
    bytes written: 4,096

Worker 1 Status:
  Process Name: DW00
  State: EXECUTING
  Object Schema: SCOT
  Object Type: SCHEMA_EXPORT/DEFAULT_ROLE
  Completed Objects: 1
  Total Objects: 1
  Worker Parallelism: 1


Export>

Veja que utilizei somente o parametro attach=SYS_EXPORT_SCHEMA_01 e depois me conectei como system, owner dono do job_name visto na view.

Ao me conectar no DataPump já vejo um preview do status do processo

Para acompanhar utilizo na linha de comando o comando status para ver o andamento do processo

Export> status

Job: SYS_EXPORT_SCHEMA_01
  Operation: EXPORT
  Mode: SCHEMA
  State: EXECUTING
  Bytes Processed: 0
  Current Parallelism: 1
  Job Error Count: 0
  Dump File: /ora01/backup/scot.dp
    bytes written: 4,096

Worker 1 Status:
  Process Name: DW00
  State: EXECUTING
  Object Schema: SCOT
  Object Name: TRANS_FINANC_CAIXA_SEQ
  Object Type: SCHEMA_EXPORT/SEQUENCE/SEQUENCE
  Completed Objects: 7,760
  Worker Parallelism: 1


Export> status

Job: SYS_EXPORT_SCHEMA_01
  Operation: EXPORT
  Mode: SCHEMA
  State: EXECUTING
  Bytes Processed: 0
  Current Parallelism: 1
  Job Error Count: 0
  Dump File: /ora01/backup/scot.dp
    bytes written: 4,096

Worker 1 Status:
  Process Name: DW00
  State: EXECUTING
  Object Schema: SCOT
  Object Name: ABRANGENCIA_PLANO
  Object Type: SCHEMA_EXPORT/TABLE/TABLE
  Completed Objects: 1
  Worker Parallelism: 1

Na linha de comando do Export DataPump podes executar o ajuda (comando help) para obter os comandos liberados a serem executados na sessão anexada (attached).

Export> help
------------------------------------------------------------------------------
The following commands are valid while in interactive mode.
Note: abbreviations are allowed.
ADD_FILE
Add dumpfile to dumpfile set.

CONTINUE_CLIENT
Return to logging mode. Job will be restarted if idle.

EXIT_CLIENT
Quit client session and leave job running.

FILESIZE
Default filesize (bytes) for subsequent ADD_FILE commands.

HELP
Summarize interactive commands.

KILL_JOB
Detach and delete job.

PARALLEL
Change the number of active workers for current job.

REUSE_DUMPFILES
Overwrite destination dump file if it exists [N].

START_JOB
Start or resume current job.
Valid keyword values are: SKIP_CURRENT.

STATUS
Frequency (secs) job status is to be monitored where
the default [0] will show new status when available.

STOP_JOB
Orderly shutdown of job execution and exits the client.
Valid keyword values are: IMMEDIATE.

Então desta forma podes efetuar stop_job, kill_job entre outras para manutenção do job no caso Export DataPump.
Outro detalhe importante é que no final do DataPump o job é excluido automaticamente do Database

Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is:
  /ora01/backup/scot.dp
Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at 09:11:52

Ao consultar do banco a view dba_datapump_jobs

SQL> select * from dba_datapump_jobs

no rows selected

E assim o meu arquivo datapump já está completado com sucesso e não precisei colocar o script para executar em background (nohup) para afim de que perder o processo em alguma queda da minha conexão com o server.

%name Datapump em modo interativo

Autor: Rafael Stoever

Bacharel em Sistema de Informação pela Uniasselvi, atualmente cursando Gerenciamento de Projetos em TI pela Pós Graduação Uniasselvi. Atuo como Analista de suporte a banco de dados – DBA pela Lumina Serviços em TI residente de Blumenau/ SC, OPN Certified Specialist, Certificado OCP 10g/11g/12c, OCE RAC10g e Linux 10g. Conhecimentos em Microsoft SqlSever, Mysql e programação web (php,asp).