Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- create or replace procedure IMPSCHEMA
- (v_exp_schema VARCHAR2,
- v_dmp_name VARCHAR2)
- AS
- v_imp_schema VARCHAR2(20) := SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA');
- v_handle number; -- Datapump job handle
- v_pct_done number; -- Percentage of job complete
- v_job_state varchar2(30); -- To keep track of job state
- v_js ku$_JobStatus; -- Job status from get_status
- v_sts ku$_Status; -- Status object returned by get_status
- v_le ku$_LogEntry; -- For WIP and error messages
- i number; -- Loop index
- BEGIN
- dbms_output.enable(1000000);
- -- Create a handle for Datapump job:
- -- =================================
- v_handle := dbms_datapump.open(operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => NULL, job_name => 'IMPORT_JOB'||'_'||to_char(sysdate,'yyyymmddhh24miss'));
- -- Set all the parameters for the export:
- -- ======================================
- dbms_datapump.add_file(handle => v_handle, filename => v_dmp_name, directory => 'AWSMOV', filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE);
- dbms_datapump.add_file(handle => v_handle, filename => v_imp_schema||'_'||to_char(sysdate,'yyyymmddhh24miss')||'.log' , directory => 'AWSMOV' ,filetype => DBMS_DATAPUMP.ku$_file_type_log_file);
- dbms_datapump.metadata_remap(v_handle,'REMAP_SCHEMA',v_exp_schema,v_imp_schema);
- dbms_datapump.metadata_transform ( v_handle, 'OID' , 0 , null ) ;
- dbms_datapump.metadata_filter(handle => v_handle,name => 'NAME_EXPR',value => q'|not in ('IMPSCHEMA','EXPSCHEMA')|' ,object_path => 'PROCEDURE');
- dbms_datapump.set_parameter(v_handle ,'TABLE_EXISTS_ACTION','REPLACE');
- -- Start the Datapump Job:
- -- =======================
- dbms_datapump.start_job(v_handle);
- -- Monitor job and display status:
- -- ===============================
- v_pct_done := 0;
- v_job_state := 'UNDEFINED';
- while (v_job_state != 'COMPLETED') and (v_job_state != 'STOPPED')
- loop
- dbms_datapump.get_status(v_handle,
- dbms_datapump.ku$_status_job_error +
- dbms_datapump.ku$_status_job_status +
- dbms_datapump.ku$_status_wip,-1,v_job_state,v_sts);
- v_js := v_sts.job_status;
- -- Display percentage done:
- -- ========================
- if v_js.percent_done != v_pct_done
- then
- dbms_output.put_line('*** Job percent done = ' || to_char(v_js.percent_done));
- v_pct_done := v_js.percent_done;
- end if;
- -- Display Work in Progress and error messages:
- -- ============================================
- if (bitand(v_sts.mask,dbms_datapump.ku$_status_wip) != 0)
- then
- v_le := v_sts.wip;
- else
- if (bitand(v_sts.mask,dbms_datapump.ku$_status_job_error) != 0)
- then
- v_le := v_sts.error;
- else
- v_le := null;
- end if;
- end if;
- if v_le is not null
- then
- i := v_le.FIRST;
- while i is not null loop
- dbms_output.put_line(v_le(i).LogText);
- i := v_le.NEXT(i);
- end loop;
- end if;
- end loop;
- dbms_datapump.detach(v_handle);
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement