oracle / expdp / impdp / data dupm / 덤프

2016.01.05 15:43database/oracle


Oracle 10g 이상부터 사용가능합니다.

기존의 exp, imp보다 향상되었다고 하네요

 

 

사용방법

원격지에서도 사용가능합니다.

 

 


1. 디렉토리 조회하기

  select * from dba_directories;


2. 디렉토리 추가하기

  create directory dpump_dir as '/DATA/oracle';


3. 디렉토리 삭제 (잘못 입력 했을 경우 삭제)

  drop directory dpump_dir;


4. 디렉토리에 대한 권한 설정

grant read, write on directory dpump_dir to 사용자(또는 public);


5. expdp (oracle 계정 접속 후 사용 -> # su - oracle)

스키마(owner) 기준

$ expdp 사용자/비번 directory=2번에서 추가한 디렉토리 schemas=스키마명 dumpfile=파일명.dmp logfile=파일명.log

전체

$ expdp dpsp/dpsp dumpfile=파일명.dmp directory=2번에서 추가한 디렉토리 full=y logfile=파일명.log job_name=dpspfullexp

 

5.1 cmd 에서 사용방법

스키마(owner) 기준

expdp 사용자/비번@111.111.11.1:1521/orcl directory=2번에서 추가한 디렉토리 schemas=스키마명 dumpfile=파일명.dmp logfile=파일명.log

전체

expdp 사용자/비번@111.111.11.1:1521/orcl directory=2번에서 추가한 디렉토리 full=y dumpfile=파일명.dmp logfile=파일명.log


* expdp 실행모드


 - full 모드 : 데이터베이스 전체를 export 받을수있다

 - schema(owner) 모드 : schema 파라미터를 사용하여 특정 스키마 전체를 받을수있다.

 - tablespace 모드 : 해당 tablespace에 속한 모든 테이블을 받을수있습니다.

   transport_tablespace파라미터를 사용한다면 테이블과 테이블스페이스의 메타데이터도 받을수있습니다.

   단!!! transport_tablespace를 사용하려면 양쪽 OS가 같고 blocksize와 characterset 이 같아야 합니다.


 * expdp 파라미터


 - directory : 디렉토리 오브젝트를 지정하여 덤프 파일의 위치로 로그파일의 위치 지정가능

 - dumpfile : 파일시스템에 저장될 덤프파일의 이름을 지정해주는 파라미터로 파일이 여러개로 나누어질때 %U로 파일 이름을 고유하게 구분해 줄수 있다.

 - filesize : 한개 파일의 최대 크기를 지정

 - parfile : 파라미터 파일을 참조하여 사용

 - logfile/nologfile : 작업내용을 저장 할 로그파일명을 지정

 - content: 작업시 어떤 내용을 포함시킬 것인가를 결정

     All :테이블과 메타데이터를 모함한 모든것

     DATA_only:테이블 데이터만 포함 

     Metadata_only:메타데이터만 포함


 - exclude/include : 작업시 원하는 오브젝트만 선택하여 작업

   ex)scott schema 의 모든 것을 expdp 받되 emp,dept 테이블만 제외할경우

   expdp scott/tiger directory=datapump dumpfile=scott01.dmp schemas=scott exclude=table:\"IN\(\'EMP\',\'DEPT\'\)\"


 - query : 특정 조건에 맞는 데이터만 expdp 를 수행할 경우

 - sample : 데이터를 export할때 데이터가 너무 많을 경우 특정 퍼센트를 지정해서 추출 범위는 0.000001~100%

 - network_link : 원격으로 expdp할때 이기능은 DB link가 생성되어있어야 합니다

 - encrytion_password : expdp받은 테이블중에 특정 컬럼이 encryption되어있는경우 작업시 암호를 설정가능

 - job_name : 작업 수행시 job에 이름을 설정할수있습니다. 설정을 하지않으면 오라클이 자동으로 설정

 - status : 이 파라미터는 작업시 갱신된 내용을 status 설정된 시간 간격으로 진행상태를 보여주게 됩니다.

 - parallel : 작업수행시 프로세스를 몇 개를 사용 할 것인가를 지정하는 파라미터입니다. 주의할점은 지정된 개수만큼의 데이터 파일을 만들어 주어야하는데 앞에서 배운 %U 옵션을 주면 자동으로 생성 

 - attach : 일시 중단된 작업에 다시 접속 할때 사용

     ex) expdp scott/tiger job_name=dp1

       attach 모드 옵션

       add_file : 덤프파일을 추가

       exit:job 의 작업에서 빠져나감 

       kill_job : 해당 작업을 삭제

       parallel : 현재 작업중인 프로세스의 개수를 조절

       start_job :중단된 작업을 다시 시작 

       status : 현재 작업을 모니터링하는 시간조절

       stop_job : 현재 작업을 중단


6.impdp

  impdp 사용자/비번 dumpfile=파일명.dmp directory=dpump_dir2 schemas=스키마명 logfile=파일명.log


 * impdp 관련 파라미터


 * impdp 관련 파라미터는 거의 expdp와 비슷한 것이 많아서 중복설명은 생략하겟으니 expdp를 참고하세요


 - content

 - include 

 - exclude

 - table_exists_action : impdp 에 만 있는 옵션으로 동일한 이름의 테이블이 존재할 때 테이블의 데이터가 다를 경우가 있습니다.

     skip : 같은 테이블을 만나면 건너뛰고 다음테이블을 impdp 함

     append : 같은 테이블을 만나면 기존내용에 데이터를 추가

     truncate : 같은 테이블을 만나면 기존 테이블을 truncate 하고 새로 impdp 합니다

     drop : 기존 테이블을 drop하고 테이블을 새로 만들어서 새로운 내용을 impdp 합니다


 - remap_schema : scott user로 expdp 받은 테이블을 다른 유저로 impdp 할때 사용

     ex)impdp system/oracle directory=datapump dumpfile=scott.dmp schemas=scott include=table:\"\=\'emp\'\" remap_schema=scott:hr


 - remap_datafile : 기존 서버의 데이터파일 정보를 이전 후 서버의 데이터파일로 매핑해주는 파라미터

   expdp 된 덤프 파일 안에 데이터 파일 정보를 가지고 있는 경우만 사용가능

     ex)impdp system/oracle full=y directory=datapump dumpflie=full01.dmp  remap_datafile='/data1/users01.dbf':'/data2/users01.dbf'


 - remap_tablespace : 기존 테이블스페이스에서 다른 테이블스페이스로 테이블을 impdp시킬때 사용

     ex) impdp system/oracle directory=datapump dumpfile=scott.dmp remap_tablespace ='users1':'users2' schemas=scott;


     ex) impdp system/oracle directory=datapump dumpfile=scott.dmp remap_tablespace =users1_data:users2_data, users1_index:users2_index schemas=scott;


     ex) impdp system/oracle directory=datapump dumpfile=scott.dmp schemas=scott remap_schema=scott:scotttest remap_tablespace=users1_data:users2_data include=table:"in ('EMP','DEPT','SAL')" logfile=scott_impdp.log


     ex) impdp system/oracle directory=datapump dumpfile=scott.dmp schemas=scott remap_schema=scott:scotttest remap_tablespace=users1_data:users2_data include=table:\"in \(\'EMP\',\'DEPT\',\'SAL\'\)\" logfile=scott_impdp.log


     ps : 테이블명 대문자~~


- network_link