2012년 3월 13일 화요일

[Oracle] Database EXPORT / IMPORT

EXPORT
EXPORT?
  - 오라클에서 제공하는 논리적인 백업에 사용되는 유틸리티로써, binary file 형태로 기록한다.
  - $ORACLE_HOME/bin 디렉토리 안에 exp 실행파일이 있다. 윈도우의 경우 exp.exe파일
  - 데이터베이스가 가동중인 상태에서 실행한다.
  - 전체 데이터베이스, 특정 사용자, 특정 테이블들을 EXPORT 할 수 있다.
  - 권한, 인덱스, 제약조건들과 테이블들과 연관되는 데이터 딕셔너리 정보도 EXPORT 할 것인지를 선택할 수 있다.
  - 마지막 EXPORT 이후로 변경된 테이블들에 대해서만 EXPORT 작업을 실행 할 수도 있다.
EXPORT 옵션
  - userid : EXPORT를 실행시키고 있는 username/password .
  - buffer : 데이터 행들을 가져오는데 사용되는 버퍼의 크기.
  - file : 생성되는 EXPORT덤프 파일명
  - filesize : EXPORT덤프 파일의 최대 크기
  - grants : 데이터베이스 객체에 대한 권한 정보의 EXPORT여부 (Y/N 플래그)
  - indexes : 테이블에 대한 INDEXES EXPORT여부 (Y/N 플래그)
  - rows : 행들에 대한 EXPORT여부. (Y/N 플래그) 만약 "no"이면 데이터는 EXPORT 되지않고 테이블의 정의만 EXPORT 된다.
  - constraints : 테이블에 대한 제약조건 정보의 EXPORT여부 (Y/N 플래그)
  - compress : IMPORT에 대비하여 테이블의 데이터를 한 extent로 압축 할것인가의 여부(Y/N 플래그)
  - full : 전체 데이터베이스를 EXPORT할것인가의 여부 (Full Level EXPORT) (Y/N 플래그)
  - owner : EXPORT 될 데이터베이스의 소유자 명 (User Level EXPORT)[owner=user]
  - tables : EXPORT될 테이블의 리스트(Table Level EXPORT) [tables=(table1, table2, ...)]
  - help : EXPORT 실행 시 파라미터에 관한 설명을 보여준다.
  - tablespaces : EXPORT 될 테이블스페이스의 리스트
  - log : EXPORT 실행 과정을 지정된 로그 파일에 저장
Full Level EXPORT
  전체 데이터베이스가 엑스포트 된다. 모든 테이블스페이스, 모든 사용자, 또한 모든 객체, 데이터들이 포함 된다.

exp userid=system/manager file='C:\full.dmp' full=y
User Level EXPORT
  - 사용자 객체들이 EXPORT 되고 객체들 안에 있는 데이터도 EXPORT 된다.
  - 사용자 객체에 대한 모든 권한들과 인덱스들도 EXPORT 된다.
-- 사용자 자신이 만든 모든 오브젝트를 그 user EXPORT하는 방법
C:\>exp userid=scott/tiger file='C:\scott.dmp' 
-- SYSTEM계정으로 특정 user소유의 오브젝트들을 EXPORT 하는 방법
C:\>exp userid=system/manager owner=scott file='C:\scottuser.dmp' 
Table Level EXPORT
  명시된 테이블만 EXPORT 되며, 테이블의 구조, 인덱스, 권한등이 테이블과 함께 EXPORT 된다.

-- SYSTEM계정으로 특정 유저의 table EXPORT하는 예제
-- 다른 계정으로 EXPORT table user명까지 지정해야 EXPORT가 성공한다.
C:\>exp userid=system/manager file='C:exp.dmp' tables=(scott.EMP, scott.DEPT)
 -- scott user table을 몇 개만EXPORT하는 예제
-- 자신의 table EXPORT할 때에는 user명을 지정할 필요가 없다.
C:\>exp userid=scott/tiger file='C:\exp.dmp' tables=(EMP, DEPT) log=exp.log




IMPORT

IMPORT란?

  - EXPORT 덤프 파일을 읽어서 그 안에 저장되어 있는 명령을 실행시킨다.
  - $ORACLE_HOME/bin 디렉토리 안에 imp 실행파일이 있다. 윈도우의 경우 imp.exe파일
  - 데이터베이스를 복구하거나 재구성 하기위해 사용 한다.
  - IMPORT를 수행하기 위해서는 반드시 EXPORT한 dump file이 존재해야 하며, dump file 받은 EXPORT옵션에 따라서 IMPORT는 제약을 가질 수 있다.

IMPORT 옵션

  - userid : IMPORT를 실생시키는 계정의 username/password 명
  - buffer : 데이터를 행들을 가져오는데 사용되는 buffer의 bytes 수
  - file : IMPORT될 EXPORT 덤프 파일명
  - show : 파일 내용이 화면에 표시되어야 할 것인가를 나타냄(Y/N 플래그)
  - ignore : IMPORT중 CREATE명령을 실행할 때 만나게 되는 에러들을 무시할 것인지 결정(Y/N 플래그)
  - indexes : 테이블 INDEX의 IMPORT여부(Y/N 플래그)
  - rows : 테이블 데이터를 IMPORT할 것인가(Y/N 플래그) 만약 "N"로 설정하면 데이터베이스 객체들에 대한 DDL만이 실행된다.
  - full : FULL엑스포트 덤프 파일이 IMPORT 할때 사용한다.
  - tables : IMPORT될 테이블 리스트
  - commit : 배열(배열의 크기는 BUFFER에 의해 설정됩니다) 단위로 COMMIT을 할것인가 결정 기본적으로는 테이블 단위로 COMMIT을 한다.
  - fromuser : EXPORT덤프 파일로 부터 읽혀져야 하는 객체들을 갖고 있는 테이터베이스 계정
  - touser : EXPORT덤프 안에 있는 객체들이 IMPORT될 데이터베이스 계정

IMPORT 예제

 
-- 전체 데이터베이스가 IMPORT(Full Level Export file을 Import)
C:\>imp userid=system/manager file='C:\full.dmp'  full=y


-- User Level Export file을 Import
C:\>imp userid=scott/tiger file='C:\scott.dmp'


-- User Level Export file을 다른 계정으로 IMPORT
-- scott 유저의 데이터를 EXPORT받아 test 유저에게 IMPORT하는 예제 
C:\>exp userid=system/manager file='C:\scott.dmp' owner=scott
C:\>imp userid=system/manager file='C:\scott.dmp' fromuser=scott touser=test 


출처 -- 오라클클럽

댓글 없음:

댓글 쓰기

언제 부터 였던가 생각해보니 아르바이트 겸 외부 컨설팅을 의뢰 받고 맥북 프로를 처음 써봤을 때 부터 였던 것 같다. 지금은 거의 대부분의 작업을 맥으로 작업을 하다 보니 윈도우에서만 실행되는 일부 프로그램들 때문과 회사 내부 ERP프로그램이 윈도우 ...