- Este tópico contém 6 respostas, 3 vozes e foi atualizado pela última vez 12 anos, 11 meses atrás por
Fábio Prado.
-
AutorPosts
-
26 de dezembro de 2012 às 11:38 pm #104952
jurupoc
ParticipantePessoal estou com o seguinte problema,
Preciso gerar um dump de um banco local e enviar para uma maquina que está localizada na amazon, o problema é que eu não tenho acesso no terminal localizado na amazon para executar os comando impdp, como posso proceder?
Abaços!
27 de dezembro de 2012 às 12:37 am #104953Fábio Prado
Participante@jurupoc,
Se for Oracle 10G ou superior, conecte-se no Bd e use a package DBMS_DATAPUMP. Veja algumas referências abaixo para vc aprender a usá-la:
- http://docs.oracle.com/cd/B28359_01/app … datpmp.htm
- http://docs.oracle.com/cd/B19306_01/app … datpmp.htm
[]s
Fábio Prado
http://www.fabioprado.net27 de dezembro de 2012 às 3:58 am #104954jurupoc
ParticipanteObrigado Fábio!!!
30 de dezembro de 2012 às 4:37 am #104967ThiagoDBA
ParticipanteOlá Jurupoc,
Como o Fábio mencionou é possível utilizar as packages DBMS_DATAPUMP no oracle a partir da versão 10g, tenho esse script PL/SQL que utilizo para algumas operações de import que pode ser útil p/ vc utilizar como base.
DECLARE
dp_id number; --job_id
BEGIN
--- dfinindo que tipo de operacao e nome do job
dp_id:=DBMS_DATAPUMP.OPEN(
operation => 'IMPORT',
job_mode => 'SCHEMA',
job_name => 'IMP_THG');
--- adicionando um arquivo de dump
DBMS_DATAPUMP.ADD_FILE(
handle => dp_id,
filename => 'schema_scott.dmp',
directory => 'DP_DEST');
-- adicionando um arquivo de log
DBMS_DATAPUMP.ADD_FILE(
handle => dp_id,
filename => 'imp_schema_scott.log',
directory => 'LOG_DEST',
filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);
DBMS_DATAPUMP.METADATA_REMAP(
handle => dp_id,
name => 'REMAP_SCHEMA',
old_value => 'SCOTT',
value => 'THG');
-- definindo o job a ser iniciado
DBMS_OUTPUT.PUT_LINE('iniciado o datapump job');
DBMS_DATAPUMP.START_JOB(
handle => dp_id);
END;
/Para conhecer mais sobre DBMS_DATAPUMP API dê uma olhada na documentação como o Fábio te passou.
At+ !
3 de janeiro de 2013 às 4:00 pm #104969jurupoc
ParticipanteObrigado ThiagoDBA!!!
3 de janeiro de 2013 às 4:08 pm #104970jurupoc
ParticipantePessoal gostaria de compartilhar o problema que eu tive, na empresa que eu trabalho solicitaram para enviar um banco de dados para um servidor localizado na AMAZON, o problema que eu encontrei foi que a AMAZON não disponibiliza acesso no servidor para executar comando imp e impdp foi ai que o Fábio Prado disse que eu poderia estar utilizando o pacote DBMS_DATAPUMP. O script que eu utilizei está logo abaixo, tive tbm que criar um dblink entre os bancos.
Até mais e obrigado a todos!
DECLARE
ind NUMBER; -- Loop index number
job_handle number; -- Data Pump job handle
percent_done number := 0; -- Percentage of job complete
job_state varchar2(100) := 'UNDEFINED'; -- Keeps track of job state
le ku$_LogEntry; -- work-in-progress and error messages
js ku$_JobStatus; -- Job status from get_status
jd ku$_JobDesc; -- Job description from get_status
sts ku$_Status; -- Status object returned by get_status
BEGIN-- Using database link establish connection to pull data from source to destination database. job_handle := dbms_datapump.open ( operation=>'IMPORT', job_mode=>'TABLE', remote_link=>'DB_LINK', job_name=> 'IMPORT_DB_LINK', version => 'COMPATIBLE'); -- Setting the degree of parallelization to 1 for this Refresh operation. dbms_datapump.set_parallel ( handle =>job_handle, degree => 1 ); --- Remap Schema objects from source schema Named LONGDESC to destination schema TEST_DPUMP. dbms_datapump.metadata_remap ( handle => job_handle,name => 'REMAP_SCHEMA',old_value => 'SCHEMA01',value => 'SCHEMA02' ); -- If a table already exists in the destination schema, don't override (this is default behavior.) dbms_datapump.set_parameter( handle => job_handle,name => 'TABLE_EXISTS_ACTION',value => 'SKIP'); -- Use statistics (rather than blocks) to estimate time. dbms_datapump.set_parameter( handle => job_handle, name => 'ESTIMATE', value => 'STATISTICS' ); -- Start the job. An exception is returned if something is not set up properly. dbms_datapump.start_job (handle => job_handle); -- The import job should now be running. This loop monitors the job until it completes, displaying progress information if there are problems. while ( job_state 'COMPLETED' and job_state 'STOPPED') loop dbms_datapump.get_status( job_handle, DBMS_DATAPUMP.ku$_status_job_error + DBMS_DATAPUMP.ku$_status_job_status + DBMS_DATAPUMP.ku$_status_wip , -1, job_state , sts ); js := sts.job_status; -- As the percentage-complete changes in this loop, the new value displays. if js.percent_done != percent_done then DBMS_OUTPUT.PUT_LINE('*** Job percent done = ' || to_char(js.percent_done)); percent_done := js.percent_done; end if; -- Displays any work-in-progress or error messages received for the job. if (bitand(sts.mask,dbms_datapump.ku$_status_wip) != 0) then le := sts.wip; else if (bitand(sts.mask,dbms_datapump.ku$_status_job_error) != 0) then le := sts.error; else le := null; end if; end if; if le is not null then ind := le.FIRST; while ind is not null loop DBMS_OUTPUT.PUT_LINE(le(ind).LogText); ind := le.NEXT(ind); end loop; end if; end loop; --- End of While loop. -- When the job finishes, display status before detaching from job. DBMS_OUTPUT.PUT_LINE('Job has completed'); DBMS_OUTPUT.PUT_LINE('Final job state = ' || job_state); DBMS_DATAPUMP.DETACH(job_handle);END;
3 de janeiro de 2013 às 7:29 pm #104975Fábio Prado
Participante@jurupoc,
Foi show de bola da sua parte dar feedback à ajuda e ainda compartilhar a solução. Poucos usuários dão feedback e um número bem menor compartilham a solução. Com certeza ela será útil para outros profissionais!
[]s
Fábio Prado
http://www.fabioprado.net -
AutorPosts
- Você deve fazer login para responder a este tópico.