Pular para o conteúdo
Visualizando 7 posts - 1 até 7 (de 7 do total)
  • Autor
    Posts
  • #104952
    jurupoc
    Participante

      Pessoal 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!

      #104953
      Fá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:

        []s

        Fábio Prado
        http://www.fabioprado.net

        #104954
        jurupoc
        Participante

          Obrigado Fábio!!!

          #104967
          ThiagoDBA
          Participante

            Olá 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+ !

            #104969
            jurupoc
            Participante

              Obrigado ThiagoDBA!!!

              #104970
              jurupoc
              Participante

                Pessoal 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;

                #104975
                Fá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

                Visualizando 7 posts - 1 até 7 (de 7 do total)
                • Você deve fazer login para responder a este tópico.