728x90
반응형
오라클 DB에서 exp / imp 유틸리티를 이용하여, Dump 파일을 생성하고 생성한 Dump 파일을 다시 DB에 적용하는 방법에 대해 알아본다.
1. 덤프파일 생성 방법 (export)
2. 생성한 덤프파일을 DB에 적용하는 방법 (import)

 

오라클에서 권장하는 Oracle Data Pump Export (expdp / impdp) 를 통한 백업은 서버에 의해 작성되나,

Dump (exp / imp) 의 경우 클라이언트에서 작성되는 차이점이 있다.

또한, exp로 추출한 데이터를 imp로 DB에 적용하는 경우 오라클 DB의 버전이 상호간에 일치해야 한다.

 


1. 명령 프롬프트(cmd) 실행

2. 데이터 추출

2-1. 데이터베이스 전체를 추출하는 경우

         exp userid=사용자ID/암호 file=백업파일 저장할 경로\저장할 백업파일명.dmp full=y 또는

         exp 사용자ID/암호 file=백업파일 저장할 경로\저장할 백업파일명.dmp full=y

예) exp userid=SYSTEM/1234 file=C:\DumpFile1.dmp full=y
      exp SYSTEM/1234 file=C:\DumpFile1.dmp full=y

 

2-2. 특정 테이블(데이터포함)만 추출하는 경우

          exp userid=사용자ID/암호 tables=테이블명 file=백업파일 저장할 경로\저장할 백업파일명.dmp 또는

          exp 사용자ID/암호 tables=테이블명 file=백업파일 저장할 경로\저장할 백업파일명.dmp

예) exp userid=SYSTEM/1234 tables=TABLE1 file=C:\DumpFile1.dmp
      exp SYSTEM/1234 tables=TABLE1 file=C:\DumpFile1.dmp

 

지정할 테이블이 여러개인 경우는 콤마( , )로 여러개의 테이블을 지정해주면 됀다.

예) exp userid=SYSTEM/1234 tables=TABLE1,TABLE2,TABLE3 file=C:\DumpFile1.dmp
      exp SYSTEM/1234 tables=TABLE1,TABLE2,TABLE3 file=C:\DumpFile1.dmp

 

 지정한 테이블의 전체가 아닌 일부 데이터만 취득하고 싶은 경우는 WHERE문 으로 취득조건을 설정할수 있다.

exp userid=사용자ID/암호 tables=테이블명  QUERY=\"WHERE 조건\" file=백업파일 저장할 경로\저장할 백업파.dmp

exp 사용자ID/암호 tables=테이블명  QUERY=\"WHERE 조건\" file=백업파일 저장할 경로\저장할 백업파일.dmp

예) TABLE1과 TABLE2 테이블에서 USER_NO(NUMBER 형식) 컬럼값이 1인 데이터만 추출해라. 
      exp userid=SYSTEM/1234 tables=TABLE1,TABLE2 QUERY=\"WHERE USER_NO=1\" file=C:\DumpFile1.dmp

예) TABLE3 테이블에서 ADDRESS(VARCHAR2 형식) 컬럼값이 "서울"인 데이터만 추출해라. 
      exp SYSTEM/1234 tables=TABLE3 QUERY=\"WHERE ADDRESS='서울'\"  file=C:\DumpFile1.dmp

 

 로컬환경에 오라클 DB를 설치했다면 위와 같은 방법으로 덤프파일을 취득하는데 문제가 없을거라 생각돼지만,  외부 서버에 오라클 DB가 설치 되있어서 클라이언트쪽 오라클 TNS(Transparent Network Substrate) 설정이 돼있는 경우라면 아래와 같이 지정하면 됀다.

exp userid=사용자ID/암호@tnsnames.ora파일에서 지정한 오라클인스턴스명 tables=테이블명 file=백업파일 저장할경로\저장할 백업파일명.dmp

예) exp userid=SYSTEM/1234@test.DB01 file=C:\DumpFile1.dmp
      exp userid=SYSTEM/1234@test.DB01 tables=TABLE1 file=C:\DumpFile1.dmp
      exp userid=SYSTEM/1234@test.DB01 tables=TABLE1,TABLE2 file=C:\DumpFile1.dmp

 

사용자ID나 암호 입력을 잘못하는 경우 아래와 같은 에러가 발생함으로 주의하자.

ORA-01017: invalid username/password; logon denied

 

 


 덤프파일 생성할때와 마찬가지로 명령 프롬프트(cmd) 에서 진행한다.

 명령어는 덤프파일 취득할때 사용했던 명령어에서 exp를 imp로 바꿔주면 됀다고 생각하면 간단하다.

 다만 exp로 이미 생성한 덤프파일을 DB에 넣어주기만 하는거기 때문에 데이터 취득때의 옵션이라던지 조건등은 제외한다.

 

exp userid=SYSTEM/1234 file=C:\DumpFile1.dmp full=y

imp userid=SYSTEM/1234 file=C:\DumpFile1.dmp

 

exp SYSTEM/1234 file=C:\DumpFile1.dmp full=y

imp SYSTEM/1234 file=C:\DumpFile1.dmp

 

exp userid=SYSTEM/1234 tables=TABLE1 file=C:\DumpFile1.dmp

imp userid=SYSTEM/1234 tables=TABLE1 file=C:\DumpFile1.dmp

 

exp SYSTEM/1234 tables=TABLE1 file=C:\DumpFile1.dmp

imp SYSTEM/1234 tables=TABLE1 file=C:\DumpFile1.dmp

 

exp userid=SYSTEM/1234 tables=TABLE1,TABLE2,TABLE3 file=C:\DumpFile1.dmp

imp userid=SYSTEM/1234 tables=TABLE1,TABLE2,TABLE3 file=C:\DumpFile1.dmp

 

exp SYSTEM/1234 tables=TABLE1,TABLE2,TABLE3 file=C:\DumpFile1.dmp

imp SYSTEM/1234 tables=TABLE1,TABLE2,TABLE3 file=C:\DumpFile1.dmp

 

exp userid=SYSTEM/1234 tables=TABLE1,TABLE2 QUERY=\"WHERE USER_NO=1\"  file=C:\DumpFile1.dmp

imp userid=SYSTEM/1234 tables=TABLE1,TABLE2 file=C:\DumpFile1.dmp

 

import (imp) 할때 테이블등이 이미 존재한다면 IMP-00015 에러가 발생하기 때문에 객체가 중첩되지 않게 imp전에 미리 정리하는것도 잊지말자.

 

 

참조
Original Export

https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-original-export-utility.html#GUID-901CBBE0-65FB-439E-942D-F2038C18BCD2

Oracle Data Pump Export

https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-export-utility.html#GUID-5F7380CE-A619-4042-8D13-1F7DDE429991

 


글 내용 중 잘못된 부분이 있거나, 첨부하실 내용이 있으시면 댓글로 남겨주세요. 공부하는데 많은 도움이 됩니다.
-- 기억의 유효기간은 생각보다 짧다. --

 

728x90
반응형