본문 바로가기

데이터 사이언스 DataScience/Data Base 데이터베이스

[Oracle] 데이터 펌프(Data Pump)로 테이블 백업하기

0. 데이터 펌프(Data Pump)란?

 오라클 10g부터 지원을 시작한 Export, Import 유틸리티.

기존 exp / imp보다 20배 가량 빠른 속도를 지원한다.

 

* 장점 : 

 - 테이블, 테이블스페이스, 스키마 등 범위를 지정해서 데이터를 지정 가능

 - 이어받기 가능 / 병렬로 작업 가능

 

* 단점 : 

 - DB가 설치된 Local storage에만 저장 가능 (Remote로 expdp가 불가능)

 - 데이터 양이 많은 경우 DB Link보다 작업의 속도가 느릴 수 있다.

 - expdp를 위해서 Local storage에 충분한 여유가 있어야 한다.

 

사용 방법

1. Directory 준비

  1) 서버에 실제 Directory 생성   

     Ex> /db/datapump 폴더 생성

mkdir /db/datapump

 

   2) DBA_DIRECTORY에서 Alias 설정

       Ex> Oracle DB에서 PUMP_TEST라는 이름의 Alias 생성

CREATE DIRECTORY PUMP_TEST AS '/db/datapump';

 

  3) 권한부여

      Ex> 생성한 Directory PUMP_TEST에 대한 읽기, 쓰기 권한을 실행할 계정에게 부여함.

GRANT READ, WRITE ON DIRECTORY PUMP_TEST TO {계정명};

 

2. expdp

   - 서버 terminal에서 실행 (sqlplus 아님)

   Ex> 특정 테이블 1개를 datapump로 export 할때 명령어 (터미널 실행이므로 한 줄로 실행)

expdp {계정}/{비밀번호} DIRECTORY=PUMP_TEST 
DUMPFILE={원하는 파일이름}.dmp
TABLES={OWNER}.{테이블이름} 
LOGFILE={원하는 파일이름}.log

 

3. impdp

  - 서버 terminal에서 실행 (sqlplus 아님) 

   Ex> export된 데이터 펌프 파일 (.dmp)에서 특정 테이블 가져오기 (터미널 실행이므로 한 줄로 실행)

         REMAP_TABLE 옵션을 사용하면 테이블 이름을 변경해서 가져올 수 있다.

impdp {계정}/{비밀번호} DIRECTORY=PUMP_TEST 
DUMPFILE={파일이름}.dmp
TABLES={OWNER}.{가져올 테이블이름}
REMAP_TABLE={OWNER}.{새로운 테이블이름}
LOGFILE={원하는 파일이름}.log

 

 

4. 옵션이 많을 경우, 파라미터 파일을 통한 DB PUMP

  - 위에 있는 파라미터들을 한 번에 명령어로 실행해도 되지만,

복잡한 옵션의 경우 파라미터 파일을 통해 실행할 수 있다.

 

1) expdp

-- 파라미터 파일 예시
dumpfile=파일이름.dmp (파일%U.dmp 로 할 경우 - 순차적으로 분할되서 저장된다 ex> 파일1.dmp, 파일2.dmp)
directory=디렉토리 이름 (Alias 이름)
logfil=로그파일.log
schemas=펌프대상스키마
include=TABLE:"NOT LIKE '%검색어%'"
include=TABLE:"!='테이블이름'"
job_name=잡이름설정가능
filesize=원하는최대파일사이즈EX)5G

-- 실행 SHELL 터미널 폴더에서 (SQLPLUS 아님)
expdp 계정/비밀번호 parfile=/경로/파라미터파일

 

2) impdp

-- 파라미터 파일 예시
dumpfile=파일이름.dmp (파일%U.dmp 로 할 경우 - 순차적으로 읽어와서 import된다 ex> 파일1.dmp, 파일2.dmp)
directory=디렉토리 이름 (Alias 이름)
logfil=로그파일.log
job_name=잡이름설정가능
filesize=원하는최대파일사이즈EX)5G
tables='테이블이름','테이블이름',';테이블이름'
remap_schema=원래스키마:바꿀스키마
content=data_only -- 데이터만, 메타만 등 설정 가능

-- 실행 SHELL 터미널 폴더에서 (SQLPLUS 아님)
impdp 계정/비밀번호 parfile=/경로/파라미터파일

 

 

5. 펌프로 떨어뜨린 dmp 파일 SFTP로 전송하기

- SFTP 전송하는 shell 파일 예시

SFTP_USER="서버 계정이름"

SFTP_HOST="IP"

SFTP_PATH="/경로"

EXPORT_PATH="/경로"



sftp $SFTP_USER@SFTP_HOST << EOF



cd $SFTP_PATH



put $EXPORT_PATH/파일이름.dmp



exit

EOF

 

 

* 참고자료 : 

https://docs.oracle.com/cd/B19306_01/server.102/b14215/dp_overview.htm

 

Overview of Oracle Data Pump

9/35 1 Overview of Oracle Data Pump Oracle Data Pump technology enables very high-speed movement of data and metadata from one database to another. Oracle Data Pump is available only on Oracle Database 10g release 1 (10.1) and later. This chapter discusses

docs.oracle.com

 

반응형