본문 바로가기

Programming/DB관련

오라클 백업 및 복구 (Export/Import)

1. export / import
  가. 여러개의 테이블 중에서 특정 table만 백업/복구 하고자 할 때
  나. 오라클의 버전, 플랫폼이 서로 다른 상황에서의 서버간 데이터 이동 시(migration)

2. export 방식
- Conventional Path export : Evaluation Buffer를 사용하는 방식, DB Buffer cache에서 필요데이터를 Evaluation Buffer로 복사 후 데이터를 가공(text -> binary)하여 디스크에 파일로 저장함. export 작업 중에 발생하는 DDL, DML 등의 명령들은 백업파일에 반영되지 않는다.(백업 파일은 Evaluation Buffer을 이용하여 작업하기 때문)

- Direct Path export : DB Buffer Cache에서 데이터를 가공(text -> Binary)하여 디스크에 파일로 저장함, export 명령 이후에 백업대상이 되는 테이블스페이스나 테이블에 Lock이 발생하기 때문에 DDL, DML 작업은 실패 또는 보류 된다.

Export 시 direct 모드의 사용은 파라미터 DIRECT=Y 로 설정될 수 있다. Direct Path Export는 인스턴스의 다른 자원들과 경쟁하지 않으며 세션에 의해 사용되는 private area로 데이터 블록을 읽어 들인다.



 

사용자 삽입 이미지 사용자 삽입 이미지




3. export 옵션 및 사용예제
  Export 파라미터

- userid/passwd : export를 수행하는 계정/패스워드
- buffer : Evaluation Buffer크기 지정(용량이 클 수록 export 작업이 빨라진다)

  ex) exp system/oracle file=/backup/export/test06.dmp full=y buffer=1024000

- file : export 결과를 저장할 파일명

  ex) exp system/oracle tablespaces=(example, undotbs1) file=/backup/export/test04.dmp

- full : 전체 DB를 export 할 것인가 지정

  ex) exp system/oracle full=y file=/backup/export/test01.dmp
       exp system/oracle full=y file=/backup/export/test02.dmp direct=y
- owner : export 받을 사용자 이름지정
  ex) exp system/oracle file=/backup/export/test05.dmp owner=(scott, hr)

- tables : export 받을 테이블 이름 지정

  ex) exp userid=system/manager tables=(emp, dept, salgrade)

       exp userid=system/manager tables=(scott.emp%)

- tablespaces : exprot 받을 테이블스페이스 이름지정

  ex) exp yserid=system/manager tablespaces = (users))

- parfile : export 옵션을 미리 지정한 파라미터 파일지정

  ex) exp system/oracle parfile=par_full.dat

- query : 테이블의 특정 부분만을 Export 하기 위해서 사용 한다

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

- rows : Export Dump 파일에 테이블 행(데이터) 포함 여부 표시 (Y)es/(N)o (default값은 y)

  만약 테이블 구조만 export하고 실제 row data는 백업을 원하지 않는 경우에는 rows=n 이라고 명시 한다.

  ex) exp userid=scott/tiger tables=(emp, dept) rows=n file=structure.dmp  (테이블의 구조만 exp)

 

4. import 옵션 및 사용예제
  Import 파라미터

- userid/passwd : import를 수행하는 계정/패스워드
- buffer : Evaluation Buffer크기 지정(용량이 클 수록 import 작업이 빨라진다)
- full : export  파일의 모든 데이터를 import 한다.

  ex) imp userid=system/manager full=y

- file : import 할 export 파일명 지정
- show : 데이터를 import 하지 않고 내용만 확인함

  ex) imp system/oracle file=/backup/export/test03.dmp full=y show=y log=test03.log

- ignore : import 작업 중 발생할 수 있는 에러를 무시하고 다음단계의 작업을 진행함

  ex) imp system/oracle file=/backup/export/test02.dmp ignore=y
- fromuser : export 할 당시의 object의 소유자 지정
- touser : import 할 object의 새 소유자 지정
  ex) imp userid=system/manager fromuser=scott touser=test

- tables : import 할 테이블 이름 지정

  ex) imp userid=system/manager tables=(scott.emp, scott.dept)
parfile : import 옵션을 미리 지정한 파라미터 파일지정


  Import 대상 서버에서 필요한 사전 작업
- Export 한 서버와 동일한 Tablespace 생성
- 충분한 크기의 Temporary Tablespace 확보
- Export 한 서버와 동일한 사용자 생성

참고 : export/import 계정
import 할 때 사용하는 계정은 export 할 때 사용한 계정이어야 한다. 이 계정이 같지 않으면 import 수행 시 오류가 발생한다.만일 export 계정을 잊었다면 덤프파일을 vi 편집기로 열어 확인할 수 있다.(2번째 줄)

참고 : import 작업 중 에러발생 시
import 작업을 진행하던 도중 에러가 발생해 같은 작업을 반복하게 되면, import 대상이 되는 테이블(제약조건이 없는)에 데이터가 중복 저장될 수 있다. 그러므로 같은 작업을 반복시에는 import 대상이 되는 테이블의 내용을 지우고(drop 또는 truncate) 진행해야 한다.

참고 : SYS 계정으로 생성된 Object export
일반적으로 SYS계정에서 생성된 객체는 export 명령어로 백업할 수 없으므로 주의해야 한다.
(단, 경우에 따라서 system 계정으로 백업이 가능하기도 하다)

 

참조 : http://www.jigi.net/4243, http://zolf.egloos.com/3351113

 

'Programming > DB관련' 카테고리의 다른 글

INDEX (인덱스)  (0) 2013.09.10
SQL LOADER란?  (0) 2013.04.24
DELETE, DROP, TRUNCATE의 비교  (0) 2013.04.24
Character Functions (문자형 함수)  (0) 2012.11.12
DECODE 함수 (ORACLE)  (0) 2012.11.12