행위

IMPORT DP

DB CAFE

Dbcafe (토론 | 기여)님의 2023년 10월 14일 (토) 02:49 판
thumb_up 추천메뉴 바로가기


1 IMPORT DP[편집]

1.1 IMPORT 사용 예시[편집]

impdp help = y
impdp scott / tiger 
DIRECTORY = dmpdir 
DUMPFILE = scott.dmp

'impdp'명령 다음 에 다양한 매개 변수 를 입력하여 가져 오기 실행 방법을 제어 할 수 있습니다 . 매개 변수를 지정하려면 다음 형식의 키워드를 사용하십시오.

impdp KEYWORD = value 또는 KEYWORD = (value1, value2, ..., valueN)

1.2 DBLINK로 IMPORT PUMP 처리 방법[편집]

1.2.1 1.DB 링크 생성[편집]

CREATE PUBLIC DATABASE LINK XXX_LINK 
CONNECT TO CYKIM identified by **** 
  USING '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=1.2.3.4)(Port=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCL)))';

1.2.2 2.IMPDP 파라미터 파일로 실행[편집]

 attach_file

주요사항
  • 주석은 '#'
  • INCLUDE 와 EXCLUDE 는 동시사용 불가

impdp parfile=파라미터파일
  • 파라미터파일
USERID=SCOTT/TIGER

JOB_NAME=JOB_MIG2STG_20191002_01
LOGFILE =JOB_MIG2STG_20191002_01.LOG

NETWORK_LINK=XXX_DB_LINK
DIRECTORY=DATA_PUMP_DIR 

#DUMPFILE=[DATA_PUMP_DIR:]XXXDB_FULL.DMP #[디렉토리 지정시]

SCHEMAS=('SCOTT','ERP')
 
TABLE_EXISTS_ACTION=REPLACE 

#ALL/DATA_ONLY/METADATA_ONLY

CONTENT=METADATA_ONLY  

INCLUDE=TABLE:"IN ('EMP','DEPT') "
#INCLUDE=TABLE:"IN (SELECT 'EMP' FROM DUAL) "  -- SQL로 처리 

#EXCLUDE=STATISTICS,GRANT   -- 제외

1.2.3 IMPORT 파라미터 샘플[편집]

$ impdp parfile=expdp_pump.par
* impdp_pump.par
userid=scott/tiger
directory=datapump
job_name=datapump
dumpfile=expdp_%U.dmp
tables=TT700
table_exists_action=append

1.3 테이블만 IMPORT(테이블 존재시 TRUNCATE)[편집]

impdp scott/tiger
tables=SCOTT.EMP,SCOTT.DEPT
network_link=XXX_DB_LINK
content=data_only 
directory=PUMP_TEST  
table_exists_action=truncate 
logfile=XXX_DUMP.log

1.4 Package, Function, Procedure 만 import 하기[편집]

※ INCLUDE 에서 사용할 수 있는 OBJECT_TYPE은 아래 뷰를 이용하여 확인 가능

   DATABASE_EXPORT_OBJECTS, SCHEMA_EXPORT_OBJECTS, and TABLE_EXPORT_OBJECTS.
$impdp system/password directory=temp_dir schemas=scott dumpfile=scott%U.dmp  logfile=scott.log 
          include=PACKAGE,FUNCTION,PROCEDURE

1.5 IMPORT DP 파라미터[편집]

1.5.1 통계정보를 제외[편집]

impdp system 
directory=DATA_PUMP_DIR 
LOGFILE=MyImpdp.log 
schemas=MyRemoteDBSchema1,MyRemoteDBSchema2 
exclude=STATISTICS

1.5.2 스키마 선택[편집]

impdp system 
directory=DATA_PUMP_DIR 
LOGFILE=MyExpdp.log 
network_link=MyRemoteDBLink 
schemas=MyRemoteDBSchema1,MyR


  • directory 로그가 저장될 오라클디렉토리명
  • logfile 로그파일명
  • network_link DB 링크를 사용
  • remap_schema scott 유저를 new_scott 유저로
  • Import multiple schemas DBA권한필요


impdp simondba@kdb01 
directory=ADMIN_DUMP_DIR 
LOGFILE=dblink_transfer.log 
network_link=OLD_DB 
schemas=simon,scott,hr

2 IMPORT API[편집]

2.1 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 => 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;
/

2.2 IMPORT 개별 TABLE (복구시)[편집]

DECLARE
 dph NUMBER;
 v_job_name VARCHAR(100) := 'IMP_JOB_TABLE_RECOVERY';
 
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 => dph,
                         filename => 'EXP_EMP_20200102_01.EXP',
                         directory => 'DATA_PUMP_DIR', 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 (''EMP'')');
 
 -- 테이블 존재시 TRUNCATE/REPLACE/APPEND  
  dbms_datapump.set_parameter(handle => dph,
                              name => 'TABLE_EXISTS_ACTION',
                              value =>'TRUNCATE');

-- 테이블 정보
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;
/