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...