본문 바로가기
DB/Oracle

DATA PUMP 데이터베이스 IMPDP 하는 방법(DMP 임포트)

by 융댜 2019. 6. 1.
반응형

IMPDP는

데이터베이스에 디렉터리에 있는 *.DMP파일을 적용시키는 방법입니다.

이때 말하는 디렉터리는 자신의 컴퓨터 디렉터리가 아닙니다. 혹시 모르시는 분들을 위해 전에 쓴 글을 링크 걸어둘게요.

https://self-interest.tistory.com/22

 

오라클 DATA PUMP (EXPDP / IMPDP) 하기전 디렉터리 추가, 조회, 삭제, 권한설정 방법

회사에서 기존에 있던 스키마를 DUMP를 떠서 다른 스키마에 덮어쓰라는 미션이 떨어졌습니다. 항상 누군가 만들어주었는데 이번에는 내가 직접 해야 했습니다. 당황스러웠지만 어려운 작업 아니니깐 저처럼 겁먹고..

self-interest.tistory.com

그리고 이전편인 EXPDP도 보시는 걸 추천합니다.

https://self-interest.tistory.com/23

 

DATA PUMP 데이터베이스 EXPDP 하는 방법(DMP 파일 만드는 방법)

EXPDP는 데이터베이스를 백업하는 방법입니다 결과적으로 *.DMP파일이 데이터베이스에 등록되어있는 디렉터리에 생성이 됩니다. 이때 말하는 디렉터리는 자신의 컴퓨터 디렉터리가 아닙니다. 혹시 모르시는 분들을..

self-interest.tistory.com

IMPDP랑 EXPDP는 비슷한 기능으로 IMP랑 EXP가 있었지만 Oracle11g 이후 비추천되고 있습니다. 그러므로 IMPDP를 사용하시기를 권장합니다. 성능면으로서도 우수합니다.

전체적인 맥락으로 보자면 아래와 같아요.

impdp <아이디> / <패스워드> @ <접속처> <옵션>

EXPDP랑 비슷한 맥락입니다. 

옵션을 어떻게 주냐에 따라 임포트하는 방식이 달라집니다.

IMPDP 또한 윈도우의 경우 파워쉘이나 명령 프롬프트를 실행하시고 하면 됩니다.

 

이제 옵션을 어떻게 주는지 대표적으로 몇 가지 알아보겠습니다.

DB 전체(full) 임포트

impdp 아이디/비밀번호@접속처 directory=디렉터리명 dumpfile=파일명.dmp full=y

 

테이블스페이스(tablespaces) 임포트

impdp 아이디/비밀번호@접속처 directory=디렉터리명 dumpfile=파일명.dmp tablespaces=테이블스페이스

 

다른 테이블스페이스로 임포트

(임포트 대상이 테이블스페이스 이름이 다를때)

impdp 아이디/비밀번호@접속처 directory=디렉터리명 dumpfile=파일명.dmp remap_tablespace=FROM테이블스페이스:TO테이블스페이스

FROM스키마: 백업당시의 테이블스페이스

TO스키마: 임포트 대상 테이블스페이스

 

스키마(Schemas) 임포트

impdp 아이디/비밀번호@접속처 directory=디렉터리명 dumpfile=파일명.dmp schemas=스키마

 

다른 스키마로 임포트

(임포트 대상이 스키마 이름이 다를때)

impdp 아이디/비밀번호@접속처 directory=디렉터리명 dumpfile=파일명.dmp remap_schema=FROM스키마:TO스키마

FROM스키마: 백업당시의 스키마

TO스키마: 임포트 대상 스키마

 

테이블(tables) 임포트

impdp 아이디/비밀번호@접속처 directory=디렉터리명 dumpfile=파일명.dmp tables=스키마.테이블

 

여기서 말하는 디렉터리명은 모두 디렉터리 오브젝트명입니다.

 

조금 더 옵션을 알아보겠습니다.

위에 적은 백업 방법 뒤에 [옵션 이름 = 값]으로 추가적으로 기입하면 됩니다.

예시)
impdp 아이디/비밀번호@접속처 directory=디렉터리명 dumpfile=파일명.dmp full=y logfile=backup.log

 

 

logfile 옵션

logfile=backup.log

디렉터리 개체의 경로가 로그 파일의 대상이 된다.  
대상 디렉터리 개체의 권한이 있는 경우, 디렉터리 이름도 생략 가능.

nologfile=yes

로그 파일을 출력하지 않는다.

nologfile=no (기본) 

로그 파일을 출력하지 않는다.

 

content 옵션

content=datadata_only

테이블의 데이터만 임포트

content=metadata_only

메타데이터(테이블 정의 데이터는 없음)만 임포트

content=all (기본) 

정의와 데이터 전부 임포트합니다.

 

table_exists_action 옵션

※ content = data_only의 경우 table_exists_action 옵션은 유효하지 않습니다.

skip (기본)
table_exists_action = skip는 테이블이 존재하는 경우, 데이터 가져 오기는하지 않는다.

truncate
table_exists_action = truncate는 테이블이 존재하는 경우, 기존 데이터 행을 내부적으로 truncate하고 데이터를 가져옵니다. 클러스터 테이블에서는 사용할 수 없다.

append
table_exists_action = append는 테이블이 존재하는 경우, 기존 데이터 행을 변경하지 않고 가져옵니다. append 파라미터의 주의점으로는 제약에 낀 때 중복되지 않은 데이터도 포함 전건가 생략되어 버리는 것.

replace
table_exists_action = replace는 테이블이 존재하는 경우, 테이블 자체를 내부적으로 drop하고 다시 생성하여 데이터를 가져옵니다. 이전 imp 명령 ignore 해당 매개 변수입니다.

 

exclude 옵션

exclude = INDEX

인덱스를 제외합니다.

임포트시에 특정 개체를 제외할 수 있습니다.

table, index, constraint, grant

remap_schema 옵션
export시 스키마 : import시 스키마
다른 스키마로 변경한다.

remap_tablepsace 옵션
export시 테이블 스페이스 : import시 테이블 스페이스
다른 테이블 스페이스로 변경한다.  

remap_table 옵션
export시 테이블 : import시 테이블
다른 테이블로 변경한다.

reuse_datafiles 옵션
reuse_datafiles = yes 
기존의 데이터 파일을 초기화 재사용한다.

reuse_datafiles = no (기본값)
기존의 데이터 파일을 초기화 재사용하지 않는다.

data_options 옵션
disable_append_hint
append 힌트를 무효화한다.

skip_constraint_errors
제약 조건 위반이 발생하더라도 롤백하지 않고 가져옵니다.

encryption_password 옵션
암호를 지정
암호화 된 데이터를 대상으로하는 경우 보안 강화에 사용한다. 
※ Enterprise Edition에서 Advanced Security 옵션 라이센스가 필요합니다.

parallel 옵션
병렬 실행 프로세스의 최대 값을 지정
※ Enterprise Edition테이블이 존재하는 경우, 테이블 자체를 내부적으로 drop하고 다시 생성하여 데이터를 가져옵니다. 이전 imp 명령 ignore 해당 매개 변수입니다.

 

반응형

댓글