오늘은 테이블이 삭제될 경우에 대비하여 테이블을 백업하고 복원하는 방법을 알아보겠습니다. 

먼저 테이블을 백업할 장소를 설정합니다.

예시로 C드라이브에 Backup이라는 파일을 만들었습니다.


C:\Backup


그리고 생성한 Backup파일을 테이블을 백업할 디렉토리(Directory)로 설정합니다.


SQL> CREATE OR REPLACE DIRECTORY mdBackup as 'C:\Backup';


그리고 mdBackup 디렉토리의 쓰기, 읽기 권한을 유저 scott에게 줍니다. 


SQL> GRANT READ, WRITE ON DIRECTORY mdBackup to scott;


이제 백업할 준비가 완료되었습니다.

command 창을 열고 디렉토리를 c:/Bakcup으로 변경해줍니다.

아래와 같이 cd(change directory) 명령어로 변경해주시면 됩니다.



디렉토리 변경이 완료되었으면 백업을 해줍니다.



scott/tiger 는 유저 아이디와 패스워드, dirBackup은 저희가 C:\Backup으로 설정한 디렉토리 이름입니다.

그리고 scott.dmp는 export될 파일이름입니다.

실행하게 되면 다음과 같이 백업된 테이블명과 row수들이 나옵니다.



자 성공적으로 완료되었습니다.

이제 C드라이브의 backUp파일에 가보시면 export된 dump 파일이 생성된 것을 확인할 수 있습니다.


이제 백업된 데이터를 가지고 사라진 데이터를 복구해보겠습니다.

사라진 데이터를 복구하기 위해서는 먼저 데이터를 삭제해야겠죠.

scott 유저가 가지고 있는 테이블을 전부 삭제 합니다.


>> 테이블 모두 삭제하기 


테이블이 모두 삭제되었으면 다시 command 창으로 이동합니다.



커맨드창에서 backup할때와 마찬가지로 입력해주고 enter를 쳐주시면 끝입니다!

여기까지 모든 테이블을 한번에 백업하고 복구하는 방법이었습니다.

지금부터는 모든 테이블이 아닌 특정 테이블을 백업하고 복구하는 방법을 알아보겠습니다. 기본원리는 같습니다.

텍스트파일(확장자명 : .txt)을 두개 만들어줍니다. 

하나는 백업용, 하나는 복구용입니다.

저는 백업용으로 scottEXP, 복구용으로 scottIMP로 만들었습니다.

그리고 scottEXP에는 다음과 같이 작성하고 저장해줍니다.


exp scott/tiger file=table_name1.dmp tables=table_name1

exp scott/tiger file=table_name2.dmp tables=table_name2

exp scott/tiger file=table_nameN.dmp tables=table_nameN


같은 방식으로 scottIMP를 작성해줍니다. (exp와 imp만 다릅니다.)


imp scott/tiger file=table_name1.dmp tables=table_name1

imp scott/tiger file=table_name2.dmp tables=table_name2

imp scott/tiger file=table_nameN.dmp tables=table_nameN


두 텍스트 파일을 작성하셨으면 두 텍스트 파일을 batch 파일로 바꿔줍니다.

확장자명만 txt에서 bat로 바꿔주시면 batch파일로 바뀝니다.


그리고 이제 scottExp.bat를 실행하시면 table_name1에서 table_nameN까지 N개의 테이블 백업이 자동으로 실행됩니다.

마찬가지로 scottIMP.bat를 실행하시면 N개의 테이블 복구가 실행됩니다.