본문 바로가기
oracle/[Backup] 백업

[데이터 이동하기] Datapump - expdp

by #moonyz 2014. 11. 10.

1. expdp 실행모드

① full 모드

- 데이터베이스 전체를 export

- DBA권한을 가지고있거나 export_full_database권한을 가지고 있어야 가능

② schema 모드

- 특정스키마의 전체를 export

- export에서 owner옵션과 동일

③ tablespace 모드

- 해당 테이블 스페이스에 속한 모든 테이블을 받을수 있음

- transport_tablespace파라미터 사용시 테이블과 테이블스페이스의 메타 데이터까지 export

- transport_tablespace를 사용하려면 양쪽 데이터베이스의 OS가 같아야 하고 block size와 characterset로 같아야함

④ table 모드

- 특정 테이블 export

- 여러개의 테이블을 export받으려면 ,(콤마)로 구분


2. expdp 파라미터

 파라미터명

의미 

 

 directory

 파일을 저장할 디렉토리명 지정 (파일명 아님)

 directory=directory_object_name

 *create or replace directory [object_name] as '/data/dp'

 dumpfile

 저장될 파일명 지정, 기본값 expdat.dmp

 dumpfile=dumpfile_%U -> 파일이 여러개로 나눠질 때

 filesize

 분할 export받을때 1개 파일 크기 

 filesize=N[bytes|kilobytes|megabytes|gigabytes]

 parfile

 각종 파라미터들을 저장해두는 파일명 

 parfile=par.file

logfile 

 작업내용을 저장할 logfile명 지정 

 logfile=logfile명

 파라미터지정하지않으면 export.log로 저장됨

nologfile 

 logfile생성하지않음 

 

compression 

 압축할 데이터지정, 기본값 METADATA_ONLY 

 압축해서 덤프파일내에 저장

 compression=[metadata_only|none|all]

content 

 받을 데이터종류 지정, 기본값 ALL

 all : 테이블, 메타데이터 포함 모든것

 data_only : 테이블데이터만 포함

 metadata_only : 메타데이터만 포함

exclude 

 exp수행시 제외할 항목 지정 

 exclude=table:\"IN\(\'EMP\',\'DEPT\'\)\"

 exclude=index:\"\=\'idx_emp_ename\'\"

include 

 exp수행시 포함될 항목 지정

 

query 

 특정조건을 주고 받음 

 query = emp:\"\'WHERE sal > 1000\'\"

sample 

 샘플로 사용할 퍼센트 지정 

 sample=scott.emp:20

network_link 

 db_link등으로 export받을때 

 network_link=emp@second_db (second_db는 원격지 DB링크명)

job_name 

 해당 job에 job name 지정

 

status 

 진행 내역을 화면에 보여줌, 기본값 0

 status=20 (20초간격으로 진행결과를 갱신하여 보여줌)

parallel 

 병령처리 개수 지정, 기본값 1 

 parallel =4 (4개의 프로세스가 동시에 expdp작업수행, 속도향상)

attach 

 일시정지된 job에 접속하는 명령어 

   add_file : 덤프파일 추가

   exit : job의 작업에서 나감

   kill_job : 해당작업 완전삭제

   parallel : 현재 작업중인 프로세스의 개수조정

   start_job : 중단된 작업을 다시 시작

   status : 현재 작업상태 모니터링하는 갱신 시간

   stop_job : 현재 작업 중단

 attach scott/tiger job_name=dp_a

reuse_dumpfiles 

 기존에 존재하던 덤프파일명을 덮어씀, 기본값 N 

 reuse_dumpfiles=Y

transport_tablespaces: 

 tansportable tablespace option, 기본값 N 

 



[실습]

1. scott 계정의 emp, dept테이블만 백업받기

 $expdp scott/tiger directory=datapump dumpfile=emp_dept.dmp tables=emp,dept


2. scott 스키마 전부 백업받기

$expdp scott/tiger direcotry=datapump dumpfile=scott01.dmp schemas=scott


3. DB전체를 백업받기

$expdp system/oracle direcotry=datapump dumpfile=full01.dmp full=y


4. 일시 중단후 다시 작업하기

Export > stop_job

$expdp system/oracle attach=system.job_name

Export > start_job 



5. 비정상적으로 종료된 job취소하기

다시 접속을 시도하지만 접속이 안되는 에러 발생

SYS > drop table system. dp_a;


6. 여러사용자의 테이블 한꺼번에 expdp받기

$expdp system/oracle directory=datapump dumpfile=scott16.dump tables=scott.emp,hr.department full=y


7. 병렬로 expdp작업하기

$expdp system/oracle directory=datapump dumpfile=full04.dmp job_name=a parallel=4


8. 병렬로 위치 분산하여 expdp작업하기

> create directory datadir1

> create directory datadir2

$expdp system/oracle full=y parallel=4 dumpfile=DATADIR1:full1%U.dat, DATADIR2:full2%U.dat filesize 100M;


9. 파라미터 파일 사용해서 expdp수행 + 여러개의 파일로 분할 

$ vi expdp.par

userid=scott/tiger

directory=datapump

job_name=datapump

logfile=expdp.log

dumpfile=expdp_%U.dmp

filesize=100M

full=y

$ expdp parilfe=expdp.par


10. 상위버전에서 하위버전으로 데이터 이동

상위버전에서 하위버전으로 datapump수행할 경우 반드시 version파라미터 사용

$ expdp scott/tiger directory=datapump dumpfile=full05.dmp version=10.2

댓글