본문 바로가기

Oracle

[Oracle] 데이터 이동 Datapump expdp로 dump file 추출하기

1. expdp란?

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

 

 

 


 

2. expdp로 dump 파일 추출하기

  2-1. dump file을 보관할 디렉토리 만들기

-- linux에서 DB접속
sqlplus / as sysdba

-- 디렉토리 만들기
SQL> create directory dir_datapump as 'linux에서 datapump할 위치';

Directory created.

 

 

  2-2. 권한 부여

  • userA 유저가 디렉토리 data_directory에 read, wirte 권한이 있어야 export(expdp), import(impdp) 진행 가능
SQL> grant read, write on directory dir_datapump to userA;

Grant succeeded.

 

 

  2-3. expdp 진행

  • 이 명령어를 시행할 때는 한줄에 다 적어야함(중간에 ENTER가 들어가면 안됨)
expdp \'/as sysdba\' schemas=TEST,TEST01 directory=dir_datapump dumpfile=expdp_dump_file.dmp 
                     logfile=expdp_dump_file.log
  • parallel 있는 경우
    • 이때 parallel=8로 해도 dump 파일이 expdp_dump_file_01.dmp에서 expdp_dump_file_08.dmp보다 더 생길 수 있음
expdp \'/as sysdba\' schemas=TEST,TEST01 directory=dir_datapump dumpfile=expdp_dump_file_%U.dmp
                     logfile=expdp_dump_file.log parallel=8

 

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

 


 

3. parfile 사용하기

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

 

  3-1. parfile 생성

[oracle@admin ~]$ vi par.expdp_DBDEV.par
schema=TEST,TEST01
directory=dir_datapump
dumpfile=expdp_dump_file.dmp
logfile=expdp_dump_file.log
...

 

 

  3-2. parfile로 expdp 진행하기

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

 

 


 

4. 주의할 점

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

 

 


 

5. expdp 옵션

  5-1. 하나만 지정 가능

매개변수 설명
full 전체 데이터베이스를 내보낼 때 full=y 사용
schemas 특정 스키마를 내보낼 때 사용
tables 특정 테이블을 내보낼 때 사용
tablespaces 특정 테이블스페이스를 내보낼 때 사용

 

 

  5-2. 공통 옵션

매개변수 설명
cluster full=y(전체 데이터베이스)일 때 RAC이 경우 cluster=n이어야 이상없이 수집 가능
cluster=y인 경우 두 노드 돌아다니면서 수집  
directory 추출한 파일의 저장 위치를 나타냄 directory=디렉토리명(디렉토리 위치X)
dumpfile 추출한 데이터 파일 이름 지정
logfile 추출한 데이터의 로그 파일
content 대상 지정.
data_only : 테이블 데이터만 추출, metadata_only : 객체 정의, all : 객체 정의 및 데이터(기본값)
exclude 제외하려는 객체 지정. 보통 exclude=statistics 로 속도 높임
parfile 파라미터 파일 지정
reuse_dumpfiles 이미 존재하는 덤프파일을 덮어쓸지 여부 reuse_dumpfiles=NO가 기본값
nologfile 로그 출력 여부. nologfile=NO가 기본값
parallel 병렬처리