출처:  http://devideby0.egloos.com/2097333



※ 10g부터 제공
expdp, impdp는 exp, imp와 호환돼지 않는다. 기존의 exp로 추출한 데이터를 impdp로 입력할 수 없다.


1. DP의 장점

 - 오브젝트와 데이터의 선택 : EXCLUDE, INCLUDE, CONTENT 파라메터를 이용해서 이전버전 보다 쉽게 추출하거나 입력할 대상을 선택할 수 있다

- 데이터베이스의 버전을 명시적으로 정의한다 : VERSION 파라메터를 사용하여 이동할 객체의 데이터베이스 버전을 지정하면 데이터 펌프를 지원하는 이전 릴리즈의 오라클 데이터베이스와 호환 가능한 덤프 파일 셋트를 생성한다. 현재는 릴리즈 10, 11 간에 호환이 가능하다

- 병렬수행이 가능하다

- exp 에 필요한 디스크 공간을 예측한다

- 분산환경에서의 네트워크 모드 : 원격지의 데이터베이스에서 직접 데이터를 추출할 수 있다

- remmaping : 데이터를 입력하는 동안 데이터를 입력할 데이터 파일명, 스키마, 테이블 스페이스를 변경할 수 있다

- 데이터를 추출할 때, 압축 기능을 사용할 수 있다

- 작업이 길어진다면 중간에 멈췄다가 재개할 수도 있다 : INTERACTIVE COMMAND LINE 모드로 가능하다



2. DP 인터페이스

- command line : 대부분의 파라메터를 커맨드라인에서 입력하여 실행한다.

- parameter file :  모든 커맨드 라인 파라메터를 파라메터 파일에 정의할 수 있다.
                          단, PARFILE은 제외한다. 이 파라메터는 파라메터 파일의 위치를 정의한다.

- interactive command line : 이 모드를 사용하면, 터미널의 로깅이 중지되고, export 혹은 import 프롬프트가 표시된다.
                           커맨드라인 혹은 파라메터 파일로 시작한 export 작업 중에 '컨트롤+C' 키를 눌러서 활성화한다.

- database control : 엔터프라이즈 메니져를 쓴다.



3. DP 모드

- Full
- Schema
- Table
- Tablespace
- Transportable tablespace




 

출처 :  http://devideby0.egloos.com/2097445



1. command line 에서 expdp 사용

--결과물을 저장할 디렉토리를 지정한다.
SQL> create directory data_pump_test as '/home/oracle/data_pump_test/';
 

--생성한 디렉토리 오브젝트에 대한 권한을 유저에게 부여한다.
SQL> grant read, write on directory data_pump_test to hr;

--사용자에게는 EXP_FULL_DATABASE, IMP_FULL_DATABASE 롤을 부여한다.
--실제로는 resouce 롤만으로도 기본적인 expdp, impdp 동작을 수행할 수 있다.

   
--expdp 실행
# expdp hr/hr directory=data_pump_test dumpfile=test_dump.dmp


-- interactive command line
    expdp 진행 중에 컨트롤+C 키를 누르면 Export> 프롬프트가 뜬다. 
    여기서 help를 타이핑하면 사용할 수 있는 명령들을 확인할 수 있다.


--data_pump_test 디렉토리에 생성된 export.log 파일의 내용을 확인한다.
 ※ {exclude|include} object_type[: "name_expr"]
  ex)
      # expdp hr/hr directory=data_pump_test dumpfile=test_dump.dmp exclude=index:"like 'EMP%'"
      # expdp hr/hr directory=data_pump_test dumpfile=test_dump.dmp include=view
      
--exclude는 해당 오브젝트를 제외하고 추출/입력, include는 해당 오브젝트만을 추출/입력
        
        contents={all | metadata_only | data_only}



2. 병렬 처리

--parallel 파라메터는 몇 개의 스레드로 병렬 처리 할 것 인지 지정한다.
# expdp hr/hr tables=paratest directory=data_pump_test dumpfile=paratest%U.dmp parallel=3 job_name=parr_test;

--paratest01.dmp, paratest02.dmp, paratest03.dmp 세 개의 파일이 생성된다.
# impdp hr/hr directory=data_pump_test dumpfile=paratest%U.dmp job_name=parr_test;


--실행 예제
SQL> create user dpumpuser identified by dpumpuser;
SQL> grant connect, resource, exp_full_database, imp_full_database to dpumpuser;
SQL> create directory data_pump as '/home/oracle/data_pump';
SQL >grant read, write on directory data_pump to dpumpuser;

$ expdp dpumpuser/dpumpuser full=y directory=data_pump dumpfile=20081030.dmp
$ impdp dpumpuser/dpumpuser directory=data_pump dumpfile=20081030.dmp

SQL> revoke read, write on directory data_pump from dpumpuser;
SQL> revoke connect, resource, exp_full_database, imp_full_database from dpumpuser;
SQL> drop directory data_pump;
SQL> drop user dpumpuser;


--※ 만약 impdp 가 퍼미션 문제로 실행되지 않는다면 SYSDBA 로 로그인한 후,
SQL> execute dbms_metadata_util.load_stylesheets;
을 실행한 후 재시도.


--특정 스키마의 구조와 데이터 추출
$expdp dpumpuser/dpumpuser schema=PORTAL directory=data_pump dumpfile=portal_schema_20081031.dmp


--content를 사용해 특정 스키마의 데이터만 추출 (all | metadata_only | data_only)
$expdp dpumpuser/dpumpuser schemas=PORTAL content=data_only directory=data_pump dumpfile=portal_schema_data_20081031.dmp


--table_exists_action 옵션 사용, 기존의 데이터를 truncate 하도록 (skip | append | truncate | replace)
   skip      : 존재하는 오브젝트에 대해 임포트 스킵
   append : 기존 오브젝트에서 업는 행만을 임포트
   truncate : 기존 테이블 truncate
   replace : drop & recreate

$ impdp dpumpuser/dpumpuser table_exists_action=truncate directory=data_pump dumpfile=portal_schema_data_20081031.dmp


--데이터 파일, 테이블 스페이스, 유저는 각각 다음의 옵션으로 변경할 수 있다.
REMAP_DATAFILE='C:\user01.dbf':'/usr/data/user01.dbf'
REMAP_TABLESPACE='users':'user'
REMAP_SCHEMA=scott:stralth


--다음 옵션으로 expdp에 사용되는 공간을 추정할 수 있다.
estimate_only=Y
$ expdp dpumpuser/dpumpuser full=y estimate_only=Y





 

+ Recent posts