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
'데이터 사이언스 DataScience > Data Base 데이터베이스' 카테고리의 다른 글
[Oracle] LOB 테이블에 NOLOGGING 옵션이 적용 안된다 (0) | 2021.11.15 |
---|---|
[Oracle] LOB 테이블에 Parallel DML 적용이 안된다 (0) | 2021.11.15 |
[Oracle] 테이블스페이스가 충분한데 INSERT가 안된다 (ORA-01654) (2) | 2021.03.03 |
[JDBC] DB 접속이 안된다 (ORA-12514) (0) | 2021.02.24 |
[Oracle] 분명히 비밀번호가 맞는데 틀리다고 나온다 (ORA-01017) (2) | 2021.02.24 |