본문 바로가기

오라클 백업/복구

EXPORT



Export/Import

특정 테이블만 백업, 복구를 원할 때, Migration 시 오라클 버전, 플랫폼이 서로 다를 때 사용하는 

논리적인 백업 툴 = EXPORT / 복구 툴 = IMPORT



두 작업 모두 DB가 켜져있을 때만 가능 

오라클 버전이 달라고 데이터 이동 가능하기때문에 이식성 아주 좋음!

export/import 작업은 temporary tablespace 공간을 사용하기 때문에 

temporary tablespace가 없거나, 사이즈가 작다거나 등 문제가 있으면

'Temporary tablespace empty' 라는 에러가 발생되면서 작업 중단됨

없으면 미리 만들고 등록해주고, 사이즈가 너무 작다 싶으면 리사이징 해주기




Export

- 데이터베이스 안에 있는 데이터 내용은 가지고 오지만 데이터 파일에 대한 정보는 가져오지 않음

- 데이터와 데이터베이스 정의를 복사, 바이너리 파일로 변환 후 OS 파일로 저장 (.dmp)

- 서버 프로세스가 DB Cache 를 확인, 해당 데이터가 있으면 바로, 없으면 Data File에서 갖고와 변환 작업을 통해

  바이너리 파일 형태인 .dmp 파일을 생성



종류

1. Conventional Path Export

Evaluation Buffer를 사용해 DB Buffer Cache에 있는 데이터를 Evaluation Buffer고 가져 온후 다 차면 디스크에 파일로 저장

데이터를 메모리에 놓고 쓰기 때문에 여러 사람이 동시에 사용할 수 있음 = 기본값

데이터파일의 프리블럭을 찾아 HWM (High Water Mark) Bump up이 계속 일어나면서 작업

메모리를 쓰기 때문에 redo 에 반영되고 db cache도 쓰고 거치는 곳이 많다 보니 속도 저하의 문제점





2. Direct Path Export

바로 DB Buffer Cache에서 데이터 정의를 바이너리 파일로 변환 후 디스크에 바로 저장

export 후에 백업 대상이 되는 테이블 스페이스는 Lock 이 발생되어, DML이나 DDL 작업은 할 수 없음

하게 되면 HWM이 Bump up 되면서 Datafile을 덮어쓰게 된다.

HWM 오른쪽에 한번에 그냥 데이터를 붓는 형식

대량 Data insert 시 편리함

메모리를 거치지 않고 사용자가 바로 봄 (정렬과 같은 개념 DB Cache --> PGA --> TEMP tablespace --> 사용자)

메모리를 거치지 않는다고 해서 무조건 다 빠른 것은 아니다. 






옵션

$ exp 옵션


 옵션명

 Default Value 

 의미

 userid

 없음 

 export를 수행하는 사용자의 계정과 암호 

 Buffer

 OS 따라 다름 

 evaluation buffer 크기를 바이트 단위로 지정 

 file

 expdat.dmp 

 export 결과를 저장할 파일명 

 Full

 No 

 전체 데이터베이스를 export 받을  

 Owner

 Current user 

 export 받을 사용자 이름을 지정 

 tables

 없음 

 export 받을 테이블 이름 지정 

 tablespaces

 없음 

 export 받을 테이블 스페이스 이름 지정 

 parfile

 없음 

 export 파라미터 파일 지정 





1. Conventional Path로 Full Export

옵션 full=y 


예) 

$ time exp system/oracle full=y log=full_log.log file=/data2/export/full_test01.dmp


time 명령어는 작업시간을 알려주는 명령어

(여기서 log 옵션은 안써도 무방)


[작업내용]




2. Direct Path 로 Full Export

Conventional Path랑 동일하나 뒤에 direct=y 옵션을 추가

Conventional Path 수행 시간이랑 비교해보면 약간 빠르다는걸 알 수 있음


예) 

$ time exp system/oracle full=y file=/data2/export/full_test01.dmp direct=y


[작업내용]




3. export 저장하는 백업파일 분할해서 받기

백업 파일 하나가 너무 크게 받아져서 후속 작업이 어려운 경우가 생김

그래서 하나로 크게 받지 않고 여러개의 작은 파일로 분할해서 백업받기

filezsize 옵션 준만큼 그 크기에 맞게 분할 됨


개수가 모자르게 쓰면, 수동으로 file이름 쓰라고 나옴


예) 

$ time exp system/oracle full=y direct=y \

> file=/data2/export/test03_1.dmp, /data2/export/test03_2.dmp, /data2/export/test03_3.dmp \

> filesize=100M 


[작업내용]




4. 특정 테이블스페이스만 받기

옵션 tablespaces=(TS명)

여러개 테이블스페이스 써도 된다. 옵션에 's' 조심할 것!

옵션에 설정해준 테이블스페이스만 작업


예) 

$ exp system/oracle file='/data2/export/ts.dmp' tablespaces=example,undotbs1


[작업내용]




5. 여러 사용자를 동시에 백업

owner=유저이름

이렇게 특정 사용자의 데이터를 백업받고 싶을때는 

무조건 system 계정으로 작업해야함!

sys 계정의 데이터는 옮길수가 없음 = 딕셔너리를 소유하기 때문에


예)

$ exp system/oracle file=/data2/export/users.dmp owner=scott,hr


[작업내용]




6. evaluation buffer 값을 조정해서 export 수행

buffer=값

크기는 바이트 단위로 지정할 수 있음

evaluation buffer 크기는 export 수행하는 속도에 영향을 줌

또한 temporary tablespace 크기 또한 영향을 주기 때문에 작업전 미리 큰 temp tablespaces 확보 후 작업하는게 좋다 


[작업내용]




7. Parameter File 를 이용한 export 수행

parfile=경로

매번 백업 받을 때마다 긴 옵션들을 쓰는거 짜증남

그래서 파일을 하나 만들어서 저장후 그 파일을 쓰는 것


예)

$ vi par_full.dat

file=/data2/export/test_pf.dmp

full=y

direct=y


$ exp system/oracle parfile=par_full.dat


[작업내용]




8. 특정 조건만 export 받기

query 옵션을 사용

query="where절조건" 

', '', < 등의 문자를 쓸꺼면(where절에서) 꼭 escape \ 문자 넣어주기


예) 

EMP 테이블에서 이름 첫글자가 F인 사람만 export 받기

$ exp scott/tiger query=\"where ename like \'F%\'\" tables=emp file=/data2/export/emp.dmp


예) 

EMP 테이블에서 job이 CLERK고 급여가 1000이상인 사람만 export

$ exp scott/tiger tables=emp file=/data2/export/emp2.dmp query=\"where job=\'CLERK\' and sal\>1000\"


예) 

parameter file에서 query 옵션 사용하기 

이때는 \ escape 문자 안써도 된다!


$ vi par_q.dat

tables=emp

query="where job='CLERK' and sal>1000"


$ exp scott/tiger parfile=par_q.dat



※ EXP-00091: Exporting questionable statistics.

이런 warning이 뜰 때가 있는데

client랑 server의 character set이 다르기 때문에 뜨는 경고


옵션에 STATISTICS=NONE 추가하면 됨

$ exp scott/tiger query=\"where ename like \'F%\'\" tables=emp file=/data2/export/emp.dmp STATISTICS=NONE


[작업내용]




9. schema 별로 자동 export 백업 받는 스크립트

DBA_TABLES 조회해서 각 schema 별로 exp를 수행해 

특정 경로에 exp를 수행한 시간으로 디렉토리를 생성한 후 그 안에 각 schema별로 dmp 파일을 만들어 저장하는 스크립트

(Bash Shell 기준, 11g 기준)


[스크립트]




'오라클 백업/복구' 카테고리의 다른 글

Datapump  (1) 2013.02.06
IMPORT  (0) 2013.02.05
Redo Log File 장애 복구  (0) 2013.02.04
Log Miner  (0) 2013.01.31
Data File 장애 복구 3 - Undo Tablespace 복구  (0) 2013.01.31