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

[데이터 이동하기] EXPORT

by #moonyz 2014. 11. 7.

<EXPORT / IMPORT>

- 데이터 이동 툴 / 논리적인 백업(export) 복구(import) 툴 (특정테이블만 백업/복구 원할때)

- 백업 및 복구용으로 많이 사용함 (No Archive log mode에서 DB open상태로 백업하고싶을때)

※ DB open상태에서는 Hot Backup만 수행가능한데 Hot Backup은 Archive log mode에서만 가능

- OS 기종이나 Oracle 버전이 달라도 데이터 이동가능 (윈도우용 오라클 ↔ 리눅스용 오라클)

- 데이터가 많을경우 물리적 백업보다 시간 많이 걸림

- 데이터만 복사 (데이터파일에 대한 정보는 가져오지 않음)

- select와 같은원리로 추출됨

- export 작업중에 추가되거나 변경된 작업은 반영되지 않음

- 서버에 부하가 많이 걸리기때문에 사용량이 적은시간에 수행하는것을 권장



<EXPORT>

- Export 유틸리티를 수행하기위해서는 sys 스키마의 catalog.sql이 실행되어 있어야 함 (catexp.sql 포함)

- 옵션을 사용하여 다양하게 export 가능

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

- 전체 DB를 export 하려면 dba권한을 가지거나 exp_full_database라는 롤을 가져야함 

   (단, dba권한을 가지는 sys계정은 DB전체 export 불가 -> sys계정은 DB관리 계정으로 딕셔너리까지 포함하기때문)

- exp/imp는 temporary tablespace를 사용하기때문에 temporary tablespace에 문제가 있으면 에러 발생

- 용량이 큰 exp/imp작업수행시 용량이 큰 temporary tablespace 생성 후 사용자에게 할당 또는 default temporary tablesapce로 지정


* EXPORT OPTION

 옵션명

기본값 

의미 

 userid

없음 

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

Buffer 

os에 따라 다름 

 Evaluation Buffer 크기를 바이트단위로 지정 

file 

expdat.dmp 

 Export 결과를 저장할 파일명 

grants 

Yes 

 해당 스키마에 설정된 권한 exp 유무 

indexes 

Yes 

 인덱스 exp 유무 

rows 

Yes 

 데이터 exp유무 

constraints 

Yes 

 제약조건 exp 유무 

 compress

Yes 

 Export 받을 때 데이터를 하나의 셋으로 압축할 것인지 유무 

full 

No 

 전체 DB exp 유무 

owner 

current user 

 특정 schema exp 유무 

tables 

없음 

 특정 table exp 유무 

tablespaces 

없음 

 특정 tablesapce exp유무 

recordlength 

 os에 따라 다름 

 파일레코드의 바이트 단위 길이

 exvaluation buffer에서 데이터 파일로 저장할때 운반바이트 단위 지정

 inctype

없음 

 증분 export의 유형 설정 (complete, cumulative, incremental) 

record 

Yes 

 증분 export 내용 기록 유형 설정(sys.incvid, sys.incexp) 

parfile 

없음 

 Export 파라미터 파일 지정 



- Conventional Path Export 와 Direct Path Export



[실습]

1. conventional path로 Full export 받기 (기본모드)

- conventional path는 default 값이므로 따로 설정해줄필요없음

- full=y 옵션

$ exp system/oracle full=y file=파일저장경로 및 파일명 log=로그파일저장경로 및 파일명

$ exp system/oracle full=y file=/data/exp/full01.dmp log=/data/exp/full_log01.log




2. Direct Path로 Full export 받기

- direct=y

- 과정이 복잡하지 않아 conventional path보다 빠를수 있으나 꼭 빠르지는 않음

$ exp system/oracle full=y file=/data/exp/full02.dmp log=/data/exp/full_log02.log direct=y




3. export를 저장하는 파일을 분할해서 받기

- 파일을 분할하여 저장하려면 file옵션을 사용하여 저장경로를 ,(콤마)로 구분

- filesize를 지정하여 그 크기만큼 분할하여 저장됨


$ exp system/oraclfull=y file=/data/exp/full03_1.dmp, /data/exp/full03_2.dmp, /data/exp/full03_3.dmp filesize=100M




4. 특정 tablespace만 export 하기

- tablespaces=테이블스페이스명

- 여러개의 테이블스페이스 나열시 ,(콤마)로 구분

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


$ exp system/oracle full=y file=/data/exp/full01.dmp tablespaces=example, users




5. 특정 table만 export 하기

- tables=테이블명

여러개의 테이블 나열시 ,(콤마)로 구분


$ exp scott/tiger tables=emp, dept file=/data/exp/emp_dept.dmp




6. 여러 사용자를 동시에 export 하기

- owner=사용자명


$ exp system/oracle file=/data/exp/scott_hr.dmp owner=scott, hr




7. evaluation buffer값이 export에 주는 영향 테스트

- evaluation buffer의 크기는 export 수행 속도에 영향을 미침

- evaluation buffer의 크기와 export 수행 속도는 무조건 비례하지는 않음

- temporary tablespace 크기 또한 exp/imp 영향을 받음 (충분히 확보 후 작업)

- buffer = 버퍼크기


$ exp scott/tiger file=/data/exp/test_01_2.dmp tables=test01 buffer=102400




8. parameter file을 이용한 export 수행

- 매번 백업 받을때마다 옵션들을 길게 설정하기 불편할때 parameter file을 만들어 사용

- parfile=경로


$ exp system/oracle parfile=full.dat




9. 특정조건만 export받기 - query 옵션 사용하기

- query 옵션을 사용하여 특정조건의 데이터만 export 받기

- 쿼리안에 특수문자(', ", < 등) 사용시 escape문자(\) 사용


$ exp soctt/tiger query=\"where ename like \'F%\'\" tables=emp file=/data/exp/test06.dmp




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

dba_tables 조회하여 각 스키마 별로 export를 수행하여 특정경로에 exp를 수행한 시간으로 디렉토리를 생성한후 

그 안에 스키마별로 dmp파일을 만들어 저장하는 스크립트 (Bash Shell, 11g 기준)









댓글