[Oralce] DB 백업(덤프) 하는 방법(exp, expdp툴 사용)

Oracle 10g 부터 데이터 백업과 복원을 위해 기존엔 exp/imp 툴이 있었는데 expdp/impdp 툴이 제공됐다. 11g 부터는 exp/imp 툴에 대한 사용 지원은 되지 않는다고 하는 데 사용은 할 수 있다. 

 

exp/imp와 expdp/impdp 의 가장 큰 차이는 백업한 파일을 덤프 파일이라고 하는데 이 덤프 파일을 exp/imp 툴은 클라이언트에 저장하고 expdp/impdp는 서버에 저장한다. 그리고 exp/imp는 오라클 버전을 설정하여 덤프를 뜨지 못하고 expdp/impdp는 덤프 할 때 오라클 버전을 설정할 수 있다.

 

만약에 오라클 11g클라이언트에서 exp를 이용해 덤프를 했을 경우 무조건 11g로만 덤프가 떠지고 expdp를 이용하면 10g 버전으로도 덤프가 가능하다는 것이다.

 

오라클 버전 10g, 11g, 12c, 18c, 19c 등등 있는데 이 차이는 데이터 구조가 다르다고 생각하면 된다. 자기가 11g로 덤프를 떴으면 그 덤프 파일의 데이터 구조는 11g인 것이다. 그래서 이 덤프 파일을 12c에 임포트 했을 때 에러가 난다. 12c버전에 임포트를 할 거면 무조건 12c 버전으로 데이터를 덤프 해야 한다.

 

DB덤프 하는 방법(exp, expdp 툴 사용법)

exp, expdp는 툴이기 때문에 어느 클라이언트 버전에서 실행되는지 확인해야 한다. cmd창에서 sqlplus 쳐보면 알 수있다. 

sqlplus 명령어를 치면 버전이 나오는데 위 사진에선 12.1로 나온다. 그래서 exp툴을 사용하면 12.1버전으로 덤프가 된다. 

 

exp, expdp를 실행시킨다는 것은 exp, expdp가 툴이기 때문에 sqlplus 클라이언트 툴과 같이 Oracle_home\bin 폴더에 exp, expdp 파일이 있고 이걸 cmd창에서 실행시켜주는 것이다.

 

exp툴 사용법

exp 계정ID/비번@TNS명 file=경로\파일명.dmp log=경로\파일명.log

 

ex) exp pdsadmin/borypds@BR_RBM2 file=D:\RBM2\brpdsadmin.dmp log=D:\RBM2\brpdsadmin.log

서버에서 실행할 때는 TNS명을 입력할 필요가 없다.

ex) exp pdsadmin/borypds file=D:\RBM2\brpdsadmin.dmp log=D:\RBM2\brpdsadmin.log

file 옵션과 log 옵션을 줄 때 경로를 적는데 이 경로는 클라이언트 컴퓨터의 경로를 적어줘야 한다. 만약에 자기 PC에서 저 exp를 사용한다면 자기 PC의 경로를 적어주면 된다.

 

그리고 full이라는 옵션이 있는데 full=y를 하면의 전체 계정의 스키마를 덤프 한다. 위 명령어에서는 full=y가 생략되어있는데 그러면 자기가 로그인한 계정의 스키마만 덤프 된다.

 

 

 

 

 

 

 

 

 

 

 

 

Directory 정의와 생성법

exp 툴과는 다르게 덤프받은 파일을 특정 위치에 저장하고 싶을땐 directory를 통해서 해야한다.

Directory는 DBMS에서 DB서버의 local 디스크 위치를 가지고 있는 Alias이다.

 

Directory 생성법

CREATE DIRECTORY 디렉토리명 AS '경로';

 

ex) CREATE DIRECTORY DIR_ECSITEMFILE AS 'D:\app\oradata\RBM3\itemfile';

 

 

expdp 툴 사용법

 

expdp 계정ID/비번@TNS명 schemas[tables, full]=계정명 directory=디렉토리명 (network_link=DB_LINK명) (version=버전) dumpfile=파일명.dmp logfile=파일명.log 

 

exp와 다른점은 schemas, directory, vsrsion, network_link 옵션이 있다는 것이다. network_link는 DB_LINK인데 DB_LINK를 이용하여 다른 디비서버의 데이터를 덤프할 수 있다. 그러려면 덤프하려고하는 디비와 내가 덤프하고싶은 디비서버와 DB_LINK가 걸려있어야 한다.

 

vsrsion 옵션은 내가 받고싶은 오라클 버전으로 덤프받을수 있다. 만약 내 지금 클라이언트 버전이 12c 인데 version옵션을 안적으면 12c 버전으로 덤프되고 version=10g 를 넣으면 10g 버전으로 덤프 받을 수 있다. 이 버전은 상당히 중요한게 내가 import하고 싶은 오라클 버전에 맞게 덤프해야 한다. 왜냐하면 버전은 데이터구조이며 그 데이터구조에 맞게 import가 되기 때문이다.

 

 

DB_LINK생성 참고

https://deftkang.tistory.com/110?category=1089009 

 

[Oracle] DB Link설정하는 방법과 오류(ORA-12154) 해결

DB Link 설정 방법 DB Link를 설정하기 위해 tnsnames.ora 파일에 tns를 정의하고 그 다음 데이터베이스 링크 생성한다. ex) 1. tnsnames.ora 파일에 tns 정의 B_DB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS =..

deftkang.tistory.com

 

schemas 옵션에 계정명을 쓰면 그 계정의 데이터만 덤프가 떠지고, directory는 내가 덤프받은 파일을 어디에 저장할지 지정하는 옵션이다. tables는 내가 특정 테이블만 덤프하는 것이고 full=y 하면 전체가 덤프된다.

 

ex) expdp system/system@HB_RBM2 network_link=BR_RBM2 schemas=ecvanedi directory=DUMP_TEST dumpfile=BR_RBM2_ecvanedi2.dmp logfile=BR_RBM2_ecvanedi.log;

옵션에 network_link를 줘서 내가 접속한 디비와 연결돼있는 다른 디비 서버의 데이터를 덤프하였다. version옵션을 안줬으니 내 클라이언트인 12c로 덤프가 될것이고 덤프된 데이터는 directory명의 경로에 저장될 것이다.

 

덤프하다가 취소하고싶으면 ctrl + C 를 누르면 된다.

 

 

참고한 블로그 https://offbyone.tistory.com/160

댓글

Designed by JB FACTORY