Oracle DMP 파일 Import/Export 가이드
Oracle에서 exp/imp, expdp/impdp 유틸리티를 사용한 데이터 백업 및 복구 방법입니다. DMP 파일을 이용한 데이터 마이그레이션을 다룹니다.
1. 기존 방식: exp/imp
# 전체 스키마 Export
exp userid=scott/tiger file=scott.dmp log=scott_exp.log owner=scott
# 특정 테이블 Export
exp userid=scott/tiger file=emp.dmp tables=emp,dept
# Import
imp userid=scott/tiger file=scott.dmp log=scott_imp.log fromuser=scott touser=scott
2. Data Pump: expdp/impdp (권장)
# 디렉토리 객체 생성 (최초 1회)
CREATE DIRECTORY dump_dir AS "/home/oracle/dump";
GRANT READ, WRITE ON DIRECTORY dump_dir TO scott;
# 스키마 Export
expdp scott/tiger directory=dump_dir dumpfile=scott.dmp logfile=scott_exp.log schemas=scott
# 스키마 Import
impdp scott/tiger directory=dump_dir dumpfile=scott.dmp logfile=scott_imp.log schemas=scott
3. Export 옵션
# 특정 테이블만
expdp scott/tiger directory=dump_dir dumpfile=emp.dmp tables=emp,dept
# 조건부 Export
expdp scott/tiger directory=dump_dir dumpfile=emp_2024.dmp
tables=emp query=emp:"WHERE hiredate >= TO_DATE(20240101, YYYYMMDD)"
# 압축 Export
expdp scott/tiger directory=dump_dir dumpfile=scott.dmp
compression=all
# 병렬 처리
expdp scott/tiger directory=dump_dir dumpfile=scott_%U.dmp
parallel=4 schemas=scott
4. Import 옵션
# 다른 스키마로 Import
impdp scott/tiger directory=dump_dir dumpfile=scott.dmp
remap_schema=scott:newuser
# 다른 테이블스페이스로 Import
impdp scott/tiger directory=dump_dir dumpfile=scott.dmp
remap_tablespace=users:new_tbs
# 테이블 이름 변경
impdp scott/tiger directory=dump_dir dumpfile=emp.dmp
tables=emp remap_table=emp:emp_backup
# 기존 테이블 삭제 후 Import
impdp scott/tiger directory=dump_dir dumpfile=scott.dmp
table_exists_action=replace
5. table_exists_action 옵션
| 옵션 | 동작 |
| SKIP | 테이블 존재 시 건너뜀 (기본값) |
| APPEND | 기존 데이터에 추가 |
| TRUNCATE | 기존 데이터 삭제 후 Import |
| REPLACE | 테이블 DROP 후 재생성 |
6. DMP 파일 내용 확인
# Import 없이 내용만 확인
impdp scott/tiger directory=dump_dir dumpfile=scott.dmp sqlfile=ddl.sql
# 테이블 목록만 확인
impdp scott/tiger directory=dump_dir dumpfile=scott.dmp
sqlfile=tables.sql include=table
7. 네트워크 모드 (DB Link)
# 원격 DB에서 직접 Import
impdp scott/tiger directory=dump_dir
network_link=remote_db_link
schemas=scott
logfile=network_imp.log
8. 문제 해결
# 권한 오류
ORA-39002: invalid operation
→ DIRECTORY 권한 확인
# 버전 불일치
→ expdp version=11.2 (하위 버전 호환)
# 공간 부족
→ dumpfile=dump_%U.dmp filesize=2G
exp/imp vs expdp/impdp
| 항목 | exp/imp | expdp/impdp |
| 속도 | 느림 | 빠름 (병렬) |
| 저장 위치 | 클라이언트 | 서버 |
| 기능 | 기본 | 풍부 |
| 권장 | 레거시 | 현재 표준 |