<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/oracle full=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 기준)
'oracle > [Backup] 백업' 카테고리의 다른 글
[데이터 이동하기] Datapump - impdp (0) | 2014.11.10 |
---|---|
[데이터 이동하기] Datapump - expdp (0) | 2014.11.10 |
[데이터 이동하기] Datapump (0) | 2014.11.10 |
[데이터 이동하기] EXP/IMP 심화학습 (0) | 2014.11.10 |
[데이터 이동하기] IMPORT (0) | 2014.11.07 |
댓글