12장 데이터이행_export pump / import pump

망구씨·2023년 10월 16일
0

오라클 DB 공부하기

목록 보기
9/10

✏️ export pump / import pump

💡 기존 export / import를 더 업그레이드 한것이 export pump / import pump

  • export 로 받은 파일은? dump 파일
  • export pump 로 받은 파일은? pump 파일

➡️ pump의 장점
1. export / import 작업을 잠깐 중지시켰다가 재시작 시킬 수 있습니다.
2. 병렬로 작업할 수 있습니다. (가장 큰 장점)
3. export 하기 전에 작업에 필요한 디스크 공간을 미리 예측할 수 있다.
4. db link를 이용해서 바로 export한 pump 파일을 원격지에 생성할 수 있습니다.
5. 다양한 remaping이 가능하다.
6. export 하면서 pump 파일을 압축을 바로 할 수 있습니다.
7. 기본 export /import 방식에 비해서 속도가 20배 정도 더 빠릅니다. (중요)

pump 의 종류 4가지
1. table level
2. user level
3. tablespace level
4. database level

remaping 옵션

💡 PUMP를 할 때는 export, import를 해줄 디렉토리를 생성해준다!!

  • export 하는 파일이 저장되도록 경로 설정해주고
  • 그 경로의 디렉토리명을 만들어준다.

1. table level pump

실습 순서 : sh유저의 sales table을 orcl3의 scott에게 넘길것이다. 다른 디렉토리, 다른 유저에게 pump 수행되는것을 확인가능! dump는 안된다.

  1. orcl2, orcl3 에서 디렉토리를 만들어준다. (익스포트, 임포트 받을 디렉토리임)
-- 1. orcl2 에서 진행 (os에서 하나, sys로 접속해서 하나 만들것임)
$ mkdir /home/oracle/pump_orcl2 #익스포트하면 여기에 dmp파일 생성됨
orcl2 SYS> create directory datapump_dir #이건 이경로로 디렉토리 설정해줄거다 라는 것 ! 즉, 이 경로의 디렉토리명은 datapump_dir이다. 
            as '/home/oracle/pump_orcl2';

-- 2. orcl3 에서 진행 (os에서 하나, sys로 접속해서 하나 만들것임)
$ mkdir /home/oracle/pump_orcl3
orcl3 SYS> create directory orcl3_dir
            as '/home/oracle/pump_orcl3';
  1. orcl2, orcl3에서 export pump/ import pump 를 수행할 유저에게 directory 를 엑세스할 권한을 부여한다.
orcl2 SYS> grant read, write on directory datapump_dir to sh; 
orcl3 SYS> grant read, write on directory orcl3_dir to scott; 
  1. table level로 export pump를 수행한다.
$ expdp sh/sh directory=datapump_dir tables=sales dumpfile=sales_pump.dmp
-- 수행하면 만들어둔 /home/oracle/pump_orcl2/ 에 dmp파일이 생성된다.
  1. /home/oracle/pump_orcl2 밑에 있는 sales_pump.dmp를 /home/oracle/pump_orcl3 밑으로 카피한다.
$ cp /home/oracle/pump_orcl2/sales_pump.dmp /home/oracle/pump_orcl3/sales_pump.dmp
  1. 그리고 orcl3에서 아래와 같이 임포트를 해준다.
$ .oraenv  orcl3
$ impdp scott/tiger directory=orcl3_dir dumpfile=sales_pump.dmp remap_schema=sh:scott remap_tablespace=example:ts1000

orcl2 -----------------------------------> orcl3
/home/oracle/pump_orcl2           /home/oracle/pump_orcl3
디렉토리명: datapump_dir                디렉토리명: orcl3_dir
테이블: sales                           테이블: sales
유저: sh                                 유저: scott
ts: example                              ts: ts1000

✅ orcl2에 있는 sh의 sales테이블을 export pump를 받았고, orcl3_dir에 가져다 놓았다.

2. user level pump

실습 순서 : orcl2 scott의 모든 테이블을 orcl3 smith라는 유저에게 임포트 한다.

  1. scott이 가지고 있는 모든 테이블을 전부 export data pump! directory는 위 1번 실습에서 만들어준 datapump_dir로 설정.
$ expdp scott/tiger directory=datapump_dir schemas=scott dumpfile=scott.dmp

💡 병렬로 하는 방법 : parallel을 사용하면 되는데 숫자는 show parameter cpu_count의 *2 하면 된다.

$ expdp scott/tiger directory=datapump_dir schemas=scott dumpfile=scott2.dmp parallel=4
  1. orcl3에 smith유저를 생성하고 권한을 준다.
SYS @ orcl3> create user smith identified by tiger;
SYS @ orcl3> grant connect, resource to smith;
  1. /home/oracle/pump_orcl2 밑에 있는 scott.dmp를 home/oracle/pump_orcl3밑에 복사하기!
$ cp /home/oracle/pump_orcl2/scott.dmp /home/oracle/pump_orcl3/scott.dmp
  1. orcl3에서 scott.dmp를 import pump합니다.
[orcl3:~]$ impdp system/oracle directory=orcl3_dir dumpfile=scott.dmp remap_schema=scott:smith 
  1. 병렬로 수행했다면 병렬도를 다시 1로 변경해주기!
    💡 병렬로 작업할 때는 dumpfile명에 %U를 쓸수있다. %U를 쓰면 오라클이 알아서 dump 파일 명을 병렬도에 맞춰서 생성함!

3. tablespace level pump

✔️ orcl2에서 작업

  1. ts2000 테이블 스페이스 생성
  2. scott 유저로 접속해서 ts2000 테이블 스페이스에서 emp2000 테이블 생성
  3. ts2000 테이블 스페이스를 read only로 변경하기
  4. ts2000 테이블 스페이스를 export 하기 (directory는 위에서 생성한 orcl2의 디렉토리!)
$ expdp directory=datapump_dir dumpfile=ts2000.dmp transport_tablespace=y tablespaces=ts2000
  1. /u01/app/oracle/oradata/orcl2/ts2000.dbf 파일을 /u01/app/oracle/oradata/orcl3/ts2000.dbf에 copy하기
  2. /home/oracle/pump_orcl2 밑에있는 ts2000.dmp를 /home/oracle/pump_orcl3 밑에 copy하기

✔️ orcl3에서 작업

  1. orcl3에 ts2000.dmp 파일을 임폴터 데이터 펌프 합니다. (directory는 위에서 생성한 orcl3의 디렉토리!)
$ impdp directory=orcl3_dir dumpfile=ts2000.dmp transport_datafiles='/u01/app/oracle/oradata/orcl3/ts2000.dbf'
  1. ts2000 테이블 스페이스를 read write합니다.
  2. scott 계정에서 emp2000 테이블 조회가 되는지 확인
    ❗️ 주의사항 : tablespace는 export할 때 read only로 변경해주고 후에 read write로 다시 바꿔주기.

4. database level pump

$ expdp directory=datapump_dir full=y file=complete02.dmp
profile
Slow and steady wins the race.

0개의 댓글