segunda-feira, 30 de maio de 2016

DataPump - Alguns comandos interessantes...

Boa noite jovens.

Você sabia que pode parar, continuar, ver o status e outras coisas quando está executando um export ou mesmo import via datapump?

Aqui vai uma dica bem legal quando estamos trabalhando com isso. 

Primeiro, vamos verificar os jobs atuais, em andamento. Para agilizar nosso exemplo, vamos considerar que temos um job já parado, com status "NOT RUNNING".

SET lines 140
COL owner_name FORMAT a10;
COL job_name FORMAT a20
COL state FORMAT a12 
COL operation LIKE owner_name
COL job_mode LIKE owner_name

SELECT 
owner_name, 
job_name, 
operation, 
job_mode, 
state, 
attached_sessions AS ATT_SESS 
FROM 
dba_datapump_jobs;









Agora começa a ficar legal. Vamos acessar o job que está parado. Para isso, vamos executar:

expdp \'/ as sysdba\' ATTACH=SYS_EXPORT_FULL_01

Será apresentado o seguinte resultado (ou algo próximo disso, dependendo da quantidade de worker's, do que você está executando, etc).

Job: SYS_EXPORT_FULL_01
 Owner: SYSTEM
 Operation: EXPORT
 Creator Privs: TRUE
 GUID: A5441357B472DFEEE040007F0100692A
 Start Time: Thursday, 08 June, 2011 20:23:39
 Mode: FULL
 Instance: db1
 Max Parallelism: 1
 EXPORT Job Parameters:
 Parameter Name      Parameter Value:
 CLIENT_COMMAND sys/******** full=y JOB_NAME=SYS_EXPORT_FULL_01
 State: IDLING
 Bytes Processed: 0
 Current Parallelism: 1
 Job Error Count: 0
 Dump File: /u01/app/oracle/admin/db1/dpdump/expdat.dmp
 bytes written: 520,192

Worker 1 Status:
 Process Name: DW00
 State: UNDEFINED

Agora, basta saber o que quer fazer. Veja os exemplos abaixo:

- Para apresentar o status
Export> status

-- Para matar o job
Export> KILL_JOB
Export> Are you sure you wish to stop this job ([yes]/no): yes

Importante: Ao matar o job, não será mais possível executar um RESUME ou START novamente. Também o registro para os dumpfiles serão removidos.
-- Para parar o job
Export> STOP_JOB=IMMEDIATE
Export> Are you sure you wish to stop this job ([yes]/no): yes
Importante: Adicionando '=IMMEDIATE' ao STOP_JOB, este não vai finalizar a tarefa atual. Ou seja, ao reiniciar o job essa tarefa deve ser refeita.
    -- Verificar o status após a parada
    SELECT 
owner_name, 
job_name, 
operation, 
job_mode, 
state
    FROM 
dba_datapump_jobs;










-- Para executar um Restart (expdp e impdp)

Export> START_JOB[=SKIP_CURRENT]
Export> CONTINUE_CLIENT

Job EXP_FULL has been reopened at Thursday, 09 June, 2011 10:26
Restarting "SYSTEM"."SYS_EXPORT_FULL_02":  sys/******** full=y JOB_NAME=SYS_EXPORT_FULL_01
Processing object type DATABASE_EXPORT/TABLESPACE
Processing object type DATABASE_EXPORT/PROFILE
Importante: Ao acrescentar o "SKIP_CURRENT", a tarefa atual não será realizada, passando ao próximo "registro" no dump.

-- Purge de job's "perdidos" com status "NOT RUNNING" na dba_datapump_jobs (expdp e impdp)

select 'DROP TABLE '||owner||'.'||table_name||';' from dba_tables where table_name like '%SYS%EXPORT%';

select 'DROP TABLE '||owner||'.'||table_name||';' from dba_tables where table_name like '%SYS%IMPORT%';

É isso jovem. Esses comandos já salvaram algumas migrações e restaurações que apresentaram algum problema e os job's simplesmente pararam sem erro algum. 

Um grande abraço
Mario

Nenhum comentário:

Postar um comentário

Isso te ajudou? Comente...

Postagem em destaque

[ORACLE] Increasing the number of cores in a virtualized Oracle Database Appliance.

Hello everyone. How are you going? Today, I'll show you the process to increase the number of cores in a virtualized ODA HA X7-2. Import...