ORACLE Oracle Data pump 실전 사용

2017.03.17 13:09

졸리운_곰 조회 수:857

Oracle Data pump 실전 사용

oracle data pump는 oracle 10g(이하 10g)부터 지원되는 data export, import 도구로 oracle DB를 백업하거나 복구 혹은 다른 서버로의 이전에 사용된다. 또한 기존 export, import 도구(exp, imp)와 비교하여 속도나 효율면에서 더 향상되었다 한다. data pump에 대한 상세한 내용은 오라클 기술 문서를 검색해보거나 검색 엔진에서 조금만 검색해봐도 쉽게 찾을 수 있다.

 

본 글에서는 data pump를 상세하게 파헤치는것 보다는 필자의 경험과 사례 중심으로 기술하고자 한다. 우선 필자의 경우 oracle 11g(이하 11g)에서 특정 user(db)를 10g로 옮기되 user(db)명 및 table space를 변경하고 싶었다.

 

11g에서 해당 db를 exp로 백업을 받은 후 10g로 imp를 시도하고 나서야 exp는 다른 버전간 특히 상위 버전에서 하위버전으로는 지원하지 않는 다는 것을 알았다.  그래서 expdp(data pump)를 이용하기로 했다.

 

우선 data pump를 사용하기 위해서는 directory를 생성해야 한다. directory는 sqlplus나 db client 도구를 이용하여 sysdba 유저로 directory를 생성한다. directory 생성에 앞서 미리 물리구조를 만들어 놓는다.  물리구조는 windows 나 unix/linux 각 형식대로 만들고 기술하면 된다. (특별한 언급이 없는 한 모든 작업은 cmd 창 또는 터미널로 한다)

 

cmd창에서 '>sqlplus "/as sysdba" 명령어를 입력하여 db에 로그인 해보자. 로그인한 후 아래와 같이 directory를 생성한다.

 

CREATE DIRECTORY directory_name AS '물리구조';  (예: create directory dump as 'c:\temp'; )

 

생성되었으면 아래와 같이 조회해 보자. 생성한 directory가 보일것이다.

 

select * from dba_directories;

 

자 이제 datapump expdp의 반은 다 된셈이다. 반만 남았다. expdp를 명령어 프롬프트(cmd)에서 실행해보자. 

 

EXPDP 유저/비번 DUMPFILE=export_target_db.dmp DIRECTORY=dump  SCHEMAS=export_target_user VERSION=10.x.0.x.0 LOGFILE=explog.log

  • expdp : export datapump 명령어

  • 유저/비번 : system 계정을 사용하거나 자신의 db를 백업할 경우 tnsname도 기술해야 한다. (expdp 유저/비번@tnsname ... )
  • dumpfile : 백업 받고자 하는 파일명 지정한 directory의 물리위치에 dump 파일이 생성된다.
  • directory : expdp 파일이 저장될 directory 명
  • schemas : 백업대상 db이다.  또는 대신 full=y는 전체 DB를 백업한다는 의미이다. (system이 아닌 특정유저의 db를 백업하는 경우 생략해도 괜찮다) 
  • version : 동일하거나 상위 버전으로 복구한다면 생략해도 되지만 하위버전으로 복구하거나 이전한다면 반드시 해당 버전으로 지정해야 한다. 필자는 11g에서 expdp를 실행했으며 dump를 10g에서 impdp 할 예정이므로 10g의 상세버전을 지정한다.
  • logfile : expdp의 로그를 기록한다. 지정된 directory에 생성된다.

 

백업이 잘되었다면 물리구조 경로에 백업된 *.dmp 파일과 log 파일이 보일것이다. 제일먼저 log 파일을 열어 내용을 확인해보자. 에러가 없다면 잘 된것이다.

 

추가로 expdp 시 특정 스키마(테이블)를 제외하고 dump를 실행하는 옵션을 설명한다.

 

EXCLUDE=TABLE:\"IN \(\'TABLE_1\', \'TABLE_2\',,,, \'TABLE_n\'\)\"

 

또 특정 스키마 추가시에는 INCLUDE를 사용하면 되겠다.

 

다음으로 impdp를 설명할 것이다. 필자는 11g에서 백업한 db를 10g에 다른 이름의 db로 이전할 것이다. 10g에도 가능하면 동일한 위치, 동일한 이름으로 directory를 생성하자. 11g에서 expdp한 파일을 10g의 directory의 물리 위치(c:\temp)로 옮겨놓고 10g에 tablespace와 user를 생성하자. oracle에 db를 생성하는 것은 user와 tablespace를 만들고 스키마 및 데이터 등을 넣어주는 것이라 할 수 있다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

자 다음의 순서대로 cmd에서 sqlplus로 10g에 접속하여 순서대로 user와 tablespace를 생성해보자.

 

- 테이블스페이스 생성

CREATE TABLESPACE tablespace_name

DATAFILE 'C:\oracle\product.2.0\oradata\xxxx\xxxx.DBF'

SIZE 300M

AUTOEXTEND ON NEXT 50M;

※ DATAFILE의 물리위치는 시스템마다 다를 수 있으며 tablespace의 구성을 비롯하여 물리파일명은 사용자가 원하는 것을 사용한다.

 

- 유저생성 및 테이블스페이스 지정

CREATE USER 새로운_유저 IDENTIFIED BY 비밀번호

DEFAULT TABLESPACE 새로생성한_tablespace명

QUOTA UNLIMITED ON 새로생성한_tablespace명;

 

- 권한부여

GRANT CONNECT, RESOURCE TO 새로운_유저;

GRANT UNLIMITED TABLESPACE TO 새로운_유저;

 

이제 data를 복구(이전)할 준비가 끝났다.  아래와 같이 impdp를 명령어 프롬프트(cmd)에서 실행해보자.

 

IMPDP system/비밀번호 DIRECTORY=dump DUMPFILE=import_target_db.dmp REMAP_SCHEMA=11g_user_name:10g_new_user_name  REMAP_TABLESPACE=11g_user_name_d:10g_new_user_name_d LOGFILE=impdp.log

 

  • impdp : import datapump 명령어

  • 유저/비번 : system 계정을 사용하거나 자신의 db를 복구할 경우 tnsname도 기술해야 한다. (impdp 유저/비번@tnsname ... )

  • directory : 복구에 사용되는 dump 파일이 위치하는 directory, 물리위치에 log파일이 생성된다.

  • dumpfile : 복구 dump 파일

  • remap_schema : dump 당시 schema에서 변경하고자 하는 schema 지정

  • remap_tablespace : dump 당시 tablespace에서 변경하고자 하는 tablespace 지정

  • logfile : impdp의 log 파일

 
심각한 오류 없이 imp가 무사히(?) 완료되면 directory 위치에 로그파일이 생성된다. 로그파일을 열어서 impdp를 확인한다.
 
간혹 schema에 table이나 index의 tablespace가 서로 다른 경우가 있다. 실제 db에 존재하는 tablespace라 실행에는 문제가 없었다 하더라도 import 시에는 존재하지 않는 tablespace이기 때문에 에러가 발생한다. 이러한 경우 tablespace를 변경해줘야 한다.
 
  • table : ALTER TABLE table_name MOVE TABLESPACE tablespace_name;
  • index : ALTER INDEX index_name REBUILD TABLESPACE tablespace_name; 
 
만약 import하고자하는 db가 동일한 schema 및 동일한 tablespace라 한다면 impdp는 다음과 같이 매우 간단해 질 수 있다.
 
IMPDP 유저/비번 DIRECTORY=dump DUMPFILE=import_target_db.dmp  LOGFILE=impdp.log
 
마찬가지로 impdp 종료 후 log를 확인해보자. 별다른 에러가 없다면 잘 된것이다.
 
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 오라클 기본 샘플 데이터베이스 졸리운_곰 2014.01.02 86310
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 78764
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 95513
32 Apply 함수 (데이터 조작) 졸리운_곰 2017.11.02 1542
31 R apply 계열 함수 총 정리 1 ( apply / lapply / sapply / vapply ) file 졸리운_곰 2017.11.02 1069
30 R 실습 학습 2017-10-28 레슨4: 데이터 시각화 졸리운_곰 2017.10.28 1568
29 R 실습 학습 2017-10-28 레슨3 : 데이터 전처리 졸리운_곰 2017.10.28 1323
28 R 실습 학습 2017-10-26 레슨2 : 데이터 입출력 및 기초통계 졸리운_곰 2017.10.27 1446
27 R 실습 학습 2017-10-26 레슨1 졸리운_곰 2017.10.26 1456
26 R의 데이터 타입 졸리운_곰 2017.10.10 1646
25 Web-Scraping-with-R-XiaoNan.pdf file 졸리운_곰 2017.05.30 2147
24 fasttrack Web Scraping with R.pdf ​ file 졸리운_곰 2017.05.30 2175
23 R : odbc를 사용하여 MSSQL 접속 졸리운_곰 2017.05.07 1288
22 Web scraping in R: A tutorial using Super Bowl Data 졸리운_곰 2017.05.06 1127
21 R을 활용한 데이터 분석 #3 –재현성과 실행 가능성 file 졸리운_곰 2017.03.05 1324
20 R을 활용한 데이터 분석 #2 실제 분석 과정 file 졸리운_곰 2017.03.05 1692
19 R을 활용한 데이터 분석 #1 – R, 그것이 알고 싶다! file 졸리운_곰 2017.03.05 1330
18 R and Google Map Making 졸리운_곰 2017.02.21 735
17 R기초교육자료.pdf file 졸리운_곰 2017.02.21 1504
16 R 실습 예제 .pdf file 졸리운_곰 2017.02.21 1964
15 R을 이용한 부동산 데이터 분석 케이스 스터디.pdf file 졸리운_곰 2017.02.21 1325
14 R을-이용한-데이터-분석SKP배포v3_1.pdf file 졸리운_곰 2017.01.29 1517
13 R을 이용한 데이터 분석 실무.pdf file 졸리운_곰 2017.01.29 1667
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED