Export/Import
특정 테이블만 백업, 복구를 원할 때, Migration 시 오라클 버전, 플랫폼이 서로 다를 때 사용하는
논리적인 백업 툴 = EXPORT / 복구 툴 = IMPORT
두 작업 모두 DB가 켜져있을 때만 가능
오라클 버전이 달라고 데이터 이동 가능하기때문에 이식성 아주 좋음!
export/import 작업은 temporary tablespace 공간을 사용하기 때문에
temporary tablespace가 없거나, 사이즈가 작다거나 등 문제가 있으면
'Temporary tablespace empty' 라는 에러가 발생되면서 작업 중단됨
없으면 미리 만들고 등록해주고, 사이즈가 너무 작다 싶으면 리사이징 해주기
Import
- export 수행해서 만든 파일을 다시 데이터베이스로 넣는 작업
- export 유틸리티가 변환한 바이너리 파일을 import 유틸리티가 읽어서 다시 데이터베이스에 저장
- 순서는 대략 create table -> insert -> 인덱스 생성 -> add constarints
- 반드시 DBA로 export 했으면 DBA로 import 해야 함,
계정을 알 수 없다면 .dmp 파일을 vi 에디터로 열어보면 첫줄or2nd줄에 U 다음에 나오는 것이 계정
scott으로 exp 하고 system으로 imp 가능
- import 과정은 DDL과 DML을 수행하는 것이므로, Redo Log와 Undo Segment를 사용
대량의 데이터를 import 할때는 반드시 큰 undo tablespace 준비해서 작업,
undo 용량이 부족할 경우 마지막에 에러나면서 전부 rollback 될수도 있음
이런 위험을 줄이기 위해서 import 할때 commit=y 옵셔을 추가하면 array 단위로 commit을 수행해 전체가 rollback되는것을 막을 수 있음
- AS-IS(구DB)에 있던 데이터와 TO-BE(신DB)에 있던 데이터가 동일해 충돌이 일어나서 다음 작업이 진행이 안되는 경우도 있음
이걸 막기 위해서 ignore=y 옵션 사용,
import단계에서 하나가 에러가면 그 다음것들은 작업이 아예 시작되지 않음,
다시 import하려면 에러나기 전 작업들을 싹 지우고 다시 import 재시작
- 인덱스 많은 테이블 import시 기존 인덱스 지우고 import 후 인덱스 재생성하는 것이 좋다
- import는 다른 작업이나 사용자가 별로 없을 때 (주로 밤시간)나, 막아놓고 작업해야 함
옵션
$ imp 옵션
export 옵션과 동일
더 추가되는 옵션들은
옵션명 | Default Value | 의미 |
show | NO | 데이터를 import하지 않고 내용만 확인 |
ignore | YES | impore 중 에러나도 무시하고 계속 진행 |
fromuser | 없음 | export 할 당시 오브젝트 소유자를 지정 |
touser | 없음 | import할 오브젝트의 새 owner 이름 지정 |
commit | NO | 각 array 입력 후 commit 할 것인가 결정 array는 한번 입력되는 단위를 의미 테이블 전체가 입력 완료된 후 커밋하는게 기본값 |
1. DBA로 전체 데이터 import
full=y
예)
$ imp system/oracle file=/data2/export/full01.dmp full=y ignore=y
TO-BE에 AS-IS와 같은 테이블이나 데이터가 존재한다면 추가하게 됨
만약 TO-BE에 제약조건이나 인덱스가 존재한다면, unique index나 primary key 등이 존재할 경우
데이터가 추가되지 않고 에러 발생
2. 특정 사용자의 데이터만 import
fromuser=사용자
tables=테이블명
전체 export 받은 파일에서 scott.test01 테이블만 import
예)
$ imp system/oracle file=/data2/export/full01.dmp fromuser=scott tables=test01 ignore=y
3. SCOTT 사용자의 test02 테이블을 HR 사용자 소유로 변경
fromuser=사용자
touser=사용자
tables=테이블명
예)
$ imp system/oracle file=/data2/export/test02.dmp fromuser=scott touser=hr ignore=y
[작업내용]
4. 실제 데이터는 import 하지 않고 DDL 문장만 추출 = 껍데기만 만드는 법
show=y
DDL = CREATE, ALTER, DROP, TRUNCATE
기본값은 no라서 show=y로 옵션 추가하면,
export 파일의 모든 내용들이 보여지는데 log 옵션을 더 추가하게 되면 그 내용들이 전부 로그파일에 저장됨
그 후에 로그 파일을 편집하면 된다.
예)
$ imp system/oracle file=/data2/export/test02.dmp full=y show=y log=test02.log
[작업내용]
5. import 할 때 테이블과 index 분리하기
오라클 권장사항 = 테이블과 인덱스는 서로 다른 테이블스페이스에 저장 -> 성능 UP!
이렇지 못하는 경우가 많아 export 후 import 할때 같은 테이블스페이스에 있던 테이블과 인덱스를
다른 테이블스페이스로 분리할 때 사용
만약 인덱스 생성 스크립트가 있다면 import 할때 indexes=n 옵션 추가후 import
이런다음 나중에 인덱스 스크립트를 수정해 생성될 테이블스페이스를 변경하고 실행하면 인덱스 분리 가능
하지만 인덱스 생성 스크립트가 없다면
import 할 때 indexfile 옵션을 사용해 인덱스 생성 스크립트를 만들어준다
이 스크립트는 테입르 생성 스크립트까지 같이 포함되어 있음, REM으로 주석처리 되어있음, 필요하면 주석 삭제 후 사용
예)
$ import system/oracle file=/data2/export/testindex.dmp full=y indexfile=testindex.sql
[작업내용]
'오라클 백업/복구' 카테고리의 다른 글
Clone DB를 이용한 무정지 상태에서의 응급 복구 (0) | 2013.02.07 |
---|---|
Datapump (1) | 2013.02.06 |
EXPORT (0) | 2013.02.04 |
Redo Log File 장애 복구 (0) | 2013.02.04 |
Log Miner (0) | 2013.01.31 |