"Oracle 데이터펌프 API활용"의 두 판 사이의 차이
DB CAFE
(→DATAPUMP API 정보) |
|||
52번째 줄: | 52번째 줄: | ||
DBMS_DATAPUMP.START_JOB(hdnl); | DBMS_DATAPUMP.START_JOB(hdnl); | ||
END; | END; | ||
+ | </source> | ||
+ | |||
+ | == 데이터펌프 IMPORT API == | ||
+ | <source lang=sql> | ||
+ | DECLARE | ||
+ | dph NUMBER; | ||
+ | v_job_name VARCHAR(100) := 'IMP_JOB_TEST'; | ||
+ | |||
+ | BEGIN | ||
+ | -- DB_LINK 이용 | ||
+ | dph := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA' ,job_name => v_job_name, remote_link => 'db링크명'); | ||
+ | |||
+ | -- 덤프파일 작업시 | ||
+ | -- dbms_datapump.add_file(handle => p_dph, | ||
+ | -- filename => 'EXPIMP%U.DMP', | ||
+ | -- directory => 'EXPIMP', filetype=>1); | ||
+ | -- 로그 | ||
+ | |||
+ | dbms_datapump.add_file(handle => dph, | ||
+ | filename => v_job_name||'.log', | ||
+ | directory => 'DATA_PUMP_DIR', filetype=>3); | ||
+ | |||
+ | -- 스키마 정보 | ||
+ | DBMS_DATAPUMP.METADATA_FILTER(handle => dph , | ||
+ | name => 'SCHEMA_EXPR', | ||
+ | value => ' IN (''MIG_BACKUP'')'); | ||
+ | |||
+ | -- 테이블 존재시 TRUNCATE/REPLACE/APPEND | ||
+ | dbms_datapump.set_parameter(handle => dph, | ||
+ | name => 'TABLE_EXISTS_ACTION', | ||
+ | value =>'REPLACE'); | ||
+ | |||
+ | -- 테이블 정보 | ||
+ | DBMS_DATAPUMP.METADATA_FILTER(handle => dph | ||
+ | ,name => 'NAME_EXPR' | ||
+ | ,value => ' IN (''TB_TEST'')' | ||
+ | ,object_type => 'TABLE' | ||
+ | ); | ||
+ | |||
+ | dbms_datapump.start_job(dph); | ||
+ | |||
+ | dbms_datapump.detach(dph); | ||
+ | EXCEPTION | ||
+ | WHEN OTHERS THEN | ||
+ | dbms_output.put_line('Error:' || sqlerrm || ' on Job-ID:' || dph); | ||
+ | END; | ||
+ | / | ||
</source> | </source> | ||
2019년 12월 9일 (월) 17:09 판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
1 스키마의 메타 동기화[편집]
DECLARE
hndl NUMBER;
TAG_NAME VARCHAR2(30) := 'EXP_MIG_TEST01';
BEGIN
hndl := DBMS_DATAPUMP.OPEN( operation => 'EXPORT'
, job_mode => 'SCHEMA' -- FULL, SCHEMA, TABLE, TABLESPACE, TRANSPORTABLE
, job_name=>'JOB_'||TAG_NAME
--, remote_link => 'DBLINK_NAME', version => 'LATEST'
);
DBMS_DATAPUMP.ADD_FILE( handle => hndl, filename => TAG_NAME||'.dmp', directory => 'DATA_PUMP_DIR', filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE, reusefile=>1);
DBMS_DATAPUMP.ADD_FILE( handle => hndl, filename => TAG_NAME||'.log', directory => 'DATA_PUMP_DIR', filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);
-- DBMS_DATAPUMP.SET_PARAMETER(handle=> hndl, name=> 'INCLUDE_METADATA', value=> 1); -- META 포함여부
DBMS_DATAPUMP.DATA_FILTER(handle=> hndl, name=> 'INCLUDE_ROWS', value=> 0); -- DATA 포함 여부 0,
DBMS_DATAPUMP.METADATA_FILTER(handle=> hndl, name=> 'SCHEMA_EXPR', value=>'IN (''FED40'',''TTT'')');
-- DBMS_DATAPUMP.METADATA_FILTER(handle=> hndl, name=> 'NAME_EXPR', value=>'IN (''FED40'', ''TEST'')');
-- DBMS_DATAPUMP.METADATA_FILTER(handle=> hndl, name=> 'NAME_LIST', value=>'''EMP'',''DEPT''');
DBMS_DATAPUMP.START_JOB(hndl);
END;
2 데이터펌프 EXPORT API[편집]
-- 1.테이블 DUMP EXPORT 스크립트
DECLARE
hdnl NUMBER;
BEGIN
hdnl := DBMS_DATAPUMP.OPEN( operation => 'EXPORT', job_mode => 'SCHEMA', job_name=>'JOB_EXP_TB_RC_JEJU_14');
DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'INIT_BK_TB_RC_JEJU_14_20190910.EXP', directory => 'DATAPUMP2', filetype => dbms_datapump.ku$_file_type_dump_file ,reusefile=>1);
DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'INIT_BK_TB_RC_JEJU_14_20190910.LOG', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file ,reusefile=>1);
-- 스키마 정보
DBMS_DATAPUMP.METADATA_FILTER(handle => hdnl,
name => 'SCHEMA_EXPR',
value => ' IN (''유저명'')'
);
-- 테이블 정보
DBMS_DATAPUMP.METADATA_FILTER(handle => hdnl
,name => 'NAME_EXPR'
,value => ' IN (''테이블명'')'
,object_type => 'TABLE'
);
DBMS_DATAPUMP.START_JOB(hdnl);
END;
3 데이터펌프 IMPORT API[편집]
DECLARE
dph NUMBER;
v_job_name VARCHAR(100) := 'IMP_JOB_TEST';
BEGIN
-- DB_LINK 이용
dph := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA' ,job_name => v_job_name, remote_link => 'db링크명');
-- 덤프파일 작업시
-- dbms_datapump.add_file(handle => p_dph,
-- filename => 'EXPIMP%U.DMP',
-- directory => 'EXPIMP', filetype=>1);
-- 로그
dbms_datapump.add_file(handle => dph,
filename => v_job_name||'.log',
directory => 'DATA_PUMP_DIR', filetype=>3);
-- 스키마 정보
DBMS_DATAPUMP.METADATA_FILTER(handle => dph ,
name => 'SCHEMA_EXPR',
value => ' IN (''MIG_BACKUP'')');
-- 테이블 존재시 TRUNCATE/REPLACE/APPEND
dbms_datapump.set_parameter(handle => dph,
name => 'TABLE_EXISTS_ACTION',
value =>'REPLACE');
-- 테이블 정보
DBMS_DATAPUMP.METADATA_FILTER(handle => dph
,name => 'NAME_EXPR'
,value => ' IN (''TB_TEST'')'
,object_type => 'TABLE'
);
dbms_datapump.start_job(dph);
dbms_datapump.detach(dph);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Error:' || sqlerrm || ' on Job-ID:' || dph);
END;
/
4 데이터펌프 로그파일 읽기 API[편집]
DECLARE
V1 VARCHAR2(200); --32767
F1 UTL_FILE.FILE_TYPE;
BEGIN
F1 := UTL_FILE.FOPEN('DATA_PUMP_DIR','INIT_BK_TB_RC_JEJU_12_20190910.LOG','R');
Loop
BEGIN
UTL_FILE.GET_LINE(F1,V1);
dbms_output.put_line(V1);
EXCEPTION WHEN No_Data_Found THEN EXIT;
END;
end loop;
IF UTL_FILE.IS_OPEN(F1) THEN
dbms_output.put_line('File is Open');
end if;
UTL_FILE.FCLOSE(F1);
END;
5 DB LINK를 이용한 파일 복사[편집]
BEGIN
DBMS_FILE_TRANSFER.PUT_FILE(
source_directory_object => 'DATA_PUMP_DIR',
source_file_name => 'sample.dmp',
destination_directory_object => 'DATA_PUMP_DIR',
destination_file_name => 'sample_copied.dmp',
destination_database => 'to_rds'
);
END;
/
6 DATAPUMP API 상세 정보[편집]
https://www.morganslibrary.org/reference/pkgs/dbms_datapump.html