Advertisement
Guest User

Untitled

a guest
Jul 20th, 2019
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.21 KB | None | 0 0
  1. create or replace procedure IMPSCHEMA
  2. (v_exp_schema VARCHAR2,
  3. v_dmp_name VARCHAR2)
  4. AS
  5. v_imp_schema VARCHAR2(20) := SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA');
  6. v_handle number; -- Datapump job handle
  7. v_pct_done number; -- Percentage of job complete
  8. v_job_state varchar2(30); -- To keep track of job state
  9. v_js ku$_JobStatus; -- Job status from get_status
  10. v_sts ku$_Status; -- Status object returned by get_status
  11. v_le ku$_LogEntry; -- For WIP and error messages
  12. i number; -- Loop index
  13.  
  14. BEGIN
  15. dbms_output.enable(1000000);
  16.  
  17. -- Create a handle for Datapump job:
  18. -- =================================
  19. v_handle := dbms_datapump.open(operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => NULL, job_name => 'IMPORT_JOB'||'_'||to_char(sysdate,'yyyymmddhh24miss'));
  20.  
  21. -- Set all the parameters for the export:
  22. -- ======================================
  23. dbms_datapump.add_file(handle => v_handle, filename => v_dmp_name, directory => 'AWSMOV', filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE);
  24. 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);
  25. dbms_datapump.metadata_remap(v_handle,'REMAP_SCHEMA',v_exp_schema,v_imp_schema);
  26. dbms_datapump.metadata_transform ( v_handle, 'OID' , 0 , null ) ;
  27. dbms_datapump.metadata_filter(handle => v_handle,name => 'NAME_EXPR',value => q'|not in ('IMPSCHEMA','EXPSCHEMA')|' ,object_path => 'PROCEDURE');
  28. dbms_datapump.set_parameter(v_handle ,'TABLE_EXISTS_ACTION','REPLACE');
  29.  
  30. -- Start the Datapump Job:
  31. -- =======================
  32. dbms_datapump.start_job(v_handle);
  33.  
  34. -- Monitor job and display status:
  35. -- ===============================
  36. v_pct_done := 0;
  37. v_job_state := 'UNDEFINED';
  38. while (v_job_state != 'COMPLETED') and (v_job_state != 'STOPPED')
  39. loop
  40. dbms_datapump.get_status(v_handle,
  41. dbms_datapump.ku$_status_job_error +
  42. dbms_datapump.ku$_status_job_status +
  43. dbms_datapump.ku$_status_wip,-1,v_job_state,v_sts);
  44. v_js := v_sts.job_status;
  45.  
  46. -- Display percentage done:
  47. -- ========================
  48. if v_js.percent_done != v_pct_done
  49. then
  50. dbms_output.put_line('*** Job percent done = ' || to_char(v_js.percent_done));
  51. v_pct_done := v_js.percent_done;
  52. end if;
  53.  
  54. -- Display Work in Progress and error messages:
  55. -- ============================================
  56. if (bitand(v_sts.mask,dbms_datapump.ku$_status_wip) != 0)
  57. then
  58. v_le := v_sts.wip;
  59. else
  60. if (bitand(v_sts.mask,dbms_datapump.ku$_status_job_error) != 0)
  61. then
  62. v_le := v_sts.error;
  63. else
  64. v_le := null;
  65. end if;
  66. end if;
  67. if v_le is not null
  68. then
  69. i := v_le.FIRST;
  70. while i is not null loop
  71. dbms_output.put_line(v_le(i).LogText);
  72. i := v_le.NEXT(i);
  73. end loop;
  74. end if;
  75. end loop;
  76.  
  77. dbms_datapump.detach(v_handle);
  78.  
  79. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement