Oracle Export and Import 예

2011. 2. 21. 10:13일 이야기

EXPORT

▣ EXPORT ?
  ⊙ 오라클에서 제공하는 논리적인 백업에 사용되는 유틸리티로써,  binary file형태로 기록합니다.
  ⊙ 데이터베이스가 가동중인 상태에서 실행합니다.
  ⊙ 전체 데이터베이스, 특정 사용자, 특정 테이블들을 엑스포트 시킬 수 있습니다.
  ⊙ 권한, 익덱스, 또한 연관된 제약조건들과 같이 테이블들과 연관되는
     데이터 딕셔너리 정보도 엑스포트 시킬 것인가를 선택할 수 있습니다.
  ⊙ 마지막 엑스포트 이후로변경된 테이블들에 대해서만 엑스포트 작업을 실행 할 수도 있습니다.


▣ Export Paramger
   - 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, ...)]


▣ Full Level Export
   - 전체 데이터베이스가 엑스포트 됩니다.
   - 모든 테이블스페이스, 모든 사용자, 또한 모든 객체, 데이터들이 포함됩니다.
   예제) C:\>exp  userid=system/manager  file='C:\full.dmp'   full=y


▣ User Level Export
  - 사용자 객체들이 엑스포트 되고 객체들 안에 있는 데이터도 엑스포트 됩니다.
  - 사용자 객체에 대한 모든 권한들과 인덱스들도 엑스포트 됩니다.
  - 다른 사용자들의 객체와 권한, 인덱스들은 엑스포트 되지 않습니다.
   예제1) 사용자 자신이 만든 모든 오브젝트를 그 user가 EXPORT하는 방법
        C:\>exp   userid=scott/tiger  file='C:\scott.dmp'
 
   예제2) SYSTEM/MANAGER로 접속한 DBA가 여러 user소유의 오브젝트들을 EXPORT 하는 방법
        C:\>exp userid=system/manager owner=scott  file='C:\scottuser.dmp'
 
 
▣ Table Level Export
   - 명시된 테이블만 엑스포트 됩니다.
   - 테이블의 구조, 인덱스, 권한등이 테이블과 함께 엑스포트 됩니다.
 
      예제1) system user로 다른 유저의 table 몇 개만 Export하는 예
       C:\>exp userid=system/manager file='C:exp.dmp' tables=(scott.EMP, scott.DEPT)
       => 위와 같이 table의 schema(user)명까지 지정해야만 export가 성공합니다.
 
       예제2) scott user로 table 몇 개만 EXPORT하는 예
       C:\>exp userid=scott/tiger file='C:\exp.dmp' tables=(EMP, DEPT) log=exp.log
       => user가 자신의 table을 export할 때에는 schema 명을 지정할 필요 없습니다.


IMPORT

▣ IMPORT ?
   ⊙ EXPORT 덤프 파일을 읽어서 그 안에 저장되어 그 파일안에 있는 명령을 실행시킵니다.
   ⊙ 데이터베이스를 복구하거나 재구성하기위해 사용될 수 있습니다.
   ⊙ 기본적으로 IMPORT는 각 테이블을 IMPORT한 후 COMMIT을 합니다. 


▣ Import Parameter
  - 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 예제

     예제1) 전체 데이터베이스가 IMPORT됩니다. (Full Level)
       C:\>imp userid=system/manager file='C:\full.dmp'  full=y

     예제2) scott의 유저 IMPORT를 실행 합니다.(User Level)
       C:\>imp userid=scott/tiger file='C:\scott.dmp'

     예제3) 다른 계정으로 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      


출처:
  ================================================ 
    * Oracle Community OracleClub.com 
    * http://www.oracleclub.com 
    * http://www.oramaster.net 
  ================================================