Pular para o conteúdo

Fóruns Banco de dados Oracle EXPORT EXPORT

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