본문 바로가기

공부이야기/Oracle

[오라클] EXPDP / IMPDP

*. Data Pump


Oracle 10g의 기능인 Data Pump는 Oracle Database data와 metadata의 이동을 위한
DBMS_DATAPUMP 패키지를 통하여 상당히 빠른 Data Pump infrastructure를 제공하고 있다.

기존 Oracle 9i까지 사용되던 exp, imp 유틸리티보다 더욱더 향상된 성능을 목적으로
만들어진 유틸리티다.

Data Pump는 exp/imp보다 훨씬 많은 기능이 있으며, 대량의 데이터를 작업할 때

무척이나 빠르게 작업할 수 있다. 다음은 간단한 사용방법 및 샘플이다.

 

*. expdp

 

1. 디렉토리 조회
   SQL> SELECT * FROM dba_directories;  

 

2. 디렉토리 추가
   SQL> DROP DIRECTORY dpump_dir2;                       -- 기존 디렉토리 dpump_dir2 drop
   SQL> CREATE DIRECTORY dpump_dir2 as '/backup/dpump';  -- /backup/dpump 에 대한 디렉토리 dpump_dir2 생성

 

3. 디렉토리에 대한 권한 설정
   SQL> GRANT READ, WRITE ON DIRECTORY dpump_dir2 to 사용자;

 

4. expdp
   # expdp system/1239 DIRECTORY=dpump_dir2 schemas=MESS_ADM   DUMPFILE=MESS_ADM_20081223.dmp \

           logfile=MESS_ADM_20081223.log

 

   # expdp SYSTEM/1239 DIRECTORY=DPUMP_DIR2 DUMPFILE=expdp_alldata_0106.dmp \

           LOGFILE=expdp_alldata_0106.log PARFILE=expdp.par CONTENT=DATA_ONLY

 

   # expdp system/1239 DIRECTORY=dpump_dir2 tables=MESS_ADM.TB_ABC110      \

           DUMPFILE=tb_ABC110_20100601.dmp logfile=tb_ABC110_20100601.log CONTENT=DATA_ONLY

 

* expdp(또는 impdp) 작업 진행 중 Control+C를 누르면 export> 프롬프트(또는 import> 프롬프트) 상태가 됨.
  Control+C 했다고 해서 작업이 중단되지는 않고, interactive mode로 변경되어 expdp(또는 impdp) 작업을

  모니터링하고 제어 가능

  [interactive mode에서 사용할 수 있는 명령어]
  - STATUS          : 현재 작업진행정도 확인 가능
  - CONTINUE_CLIENT : 다시 원래 모드로 돌아감
  - KILL_JOB
  - STOP_JOB
  - 나머지 명령어는 HELP 참고

 

5. expdp 실행모드

1.full 모드 : 데이터베이스 전체를 export 받을수있다
2.schema 모드 : schema 파라미터를 사용하여 특정 스키마 전체를 받을수있다.
3.tablespace 모드 : 해당 tablespace에 속한 모든 테이블을 받을수있습니다.
transport_tablespace파라미터를 사용한다면 테이블과 테이블스페이스의 메타데이터도 받을수있습니다.
단!!! transport_tablespace를 사용하려면 양쪽 OS가 같고 blocksize와 characterset 이 같아야 합니다.

 

*. impdp


 

1. 디렉토리 조회
   SQL> SELECT * FROM dba_directories;  

 

2. 디렉토리 추가
   SQL> DROP DIRECTORY dpump_dir2;                       -- 기존 디렉토리 dpump_dir2 drop
   SQL> CREATE DIRECTORY dpump_dir2 as '/backup/dpump';  -- /backup/dpump 에 대한 디렉토리 dpump_dir2 생성

 

3. 디렉토리에 대한 권한 설정
   SQL> GRANT READ, WRITE ON DIRECTORY dpump_dir2 to 사용자;

 

4. impdp


   # impdp system/1239 dumpfile=PT_ABC110_02.dmp directory=dpump_dir2 \
      job_name=job_impdp2 logfile=impdp_PT_ABC110_02.log TABLES=MESS_ADM.TB_ABC110 \
      parallel=4 TABLE_EXISTS_ACTION=APPEND

 

   [TABLE_EXISTS_ACTION 옵션]
    같은 이름의 테이블이 존재할 때 SKIP / APPEND / TRUNCATE / REPLACE