본문 바로가기

Oracle

[Oracle] 데이터 이동 Datapump impdp로 dump file 가져오기

1. impdp란?

    Oracle 10g 이상에서 사용 가능한 가져오기 기능임. 이전의 exp에 비해 성능이 향상되어 고속으로 내보낼 수 있고, 덤프 파일의 압축화 등 다양한 기능이 추가됨

 

 


 

2. impdp로 dump 파일 추출하기

  2-1. expdp 데이터 impdp할 DB 파일 옮기기(필요한 경우에만)

  • FTP 프로그램 이용해서 옮기기 (저는 FileZilla 사용합니다)

 

  2-2. impdp할 DB에 운영 크기 확인

  • tablespace 여유공간이 부족하면 진행하다 에러 발생
select sum(bytes)/1024/1024/1024 
  from dba_segments 
 where tablespace_name = '테이블스페이스명';

 

  • 만약 tablespace가 없다면 만들고, 용량 부족하면 늘리기
-- tablespace 신규 생성
create tablespace 테이블스페이스명 datafile '/경로/테이블스페이스파일명.dbf'
       size 초기용량(100m,1g 등) autoextend [on/off] maxsize 용량;

-- tablespace 용량 추가
alter database datafile '특정파일' autoextend [on/off] maxsize 용량;

 

 

  2-3. impdp 진행

  • 이 명령어를 시행할 때는 한줄에 다 적어야함(중간에 ENTER가 들어가면 안됨)
[oracle@admin ~]$ impdp \'/as sysdba\' directory=dir_datapump dumpfile=impdp_dump_file.dmp logfile=impdp_dump_file.log
  • parallel 있는 경우
    • parallel로 export했으면 import할 때 그 파일들을 한번에 다 import해야함(ex. dumpfile=expdp_full_%U.dmp) -> 이렇게 하지 않으면 에러 발생
    • export할 때 parallel=8로 줬어도 impdp할 때는 parallel=16가능
[oracle@admin ~]$ impdp \'/as sysdba\' directory=dir_datapump dumpfile=impdp_dump_file_%U.dmp
                  logfile=impdp_dump_file.log parallel=8

 

  • 통계정보 제외하고(exclude=statistics) 낸 후 나중에 impdp하고 통계정보 돌리면 조금 빠름

 


 

3. parfile 사용하기

  • parfile로 생성하면 길어지는 명령어를 쉽게 확인 가능
  • 반복 작업 시 dump 파일명과 로그 파일명만 변경하면 쉬움

 

  3-1. parfile 생성

[oracle@admin ~]$ vi par.impdp_DBDEV.par
directory=dir_datapump
dumpfile=impdp_dump_file.dmp
logfile=impdp_dump_file.log
...

 

 

  3-2. parfile로 impdp 진행하기

[oracle@admin ~]$ impdp \'/as sysdba\' parfile=par.impdp_DBDEV.par

 

 


 

4. 주의할 점

  • 데이터 레이아웃이 달라도 타입만 맞으면 다 들어가기 때문에 레이아웃이 맞는지 우선 확인 필요!! 
  • data pump는 dbms 패키지로 처리되는 거라 안죽음 -> 반드시 control c 해서 프롬프터 뜨면 kill_job해야함

 

 


 

5. impdp 옵션

 

매개변수 설명
full 전체 데이터베이스를 가지고올 때 full=y 사용
schemas 특정 스키마를 가지고올 때 사용
tables 특정 테이블을 가지고올 때 사용
tablespaces 특정 테이블스페이스를 가지고올 때 사용
remap_schema 다른 이름의 스키마로 가지고올 때 사용
remap_tablespace 다른 이름의 테이블스페이스로 가지고올 때 사용

 

매개변수 설명
directory 추출한 파일의 저장 위치를 나타냄 directory=디렉토리명(디렉토리 위치X)
dumpfile 추출한 데이터 파일 이름 지정
export할 때 parallel로 했으면 import할 때 그 파일들을 한번에 다 import해야함(dumpfile명_%U.dmp)
logfile 추출한 데이터의 로그 파일
content 대상 지정. expdp 시 필요한 내용만 추출했다면 impdp할 때 옵션 필요 없음
data_only : 테이블 데이터만 추출, metadata_only : 객체 정의, all : 객체 정의 및 데이터(기본값)
table_exists_action import 할 곳에 이미 정의되어있는 데이터가 존재했을 때 실행 방식 지정
truncate : 기존 데이터 truncate, replace : 기존 정의를 drop함(객체 drop),
append : 기존 데이터는 그대로 두고 import, skip : 기존 정의와 데이터 그대로 두고 다음으로 넘어감
exclude 제외하려는 객체 지정.
parfile 파라미터 파일 지정
nologfile 로그 출력 여부. nologfile=NO가 기본값
parallel 병렬처리. export할 때 parallel=8로 줬어도 impdp할 때는 16가능