2013년 8월 13일 화요일

Time Base Recovery(1) 중요한 테이블이나 테이블의 데이터를 삭제 했을 때의 복구 방법 입니다. 관리자는 2005년 1월 10일 10시 30분경에 전날(1월9일) 오전 10시 무렵에 중요한 emp 테이블을 실수로 삭제 했다는 보고를 받았습니다. ----------------------------- 복구 과정 ----------------------------- 1. 현재 데이터베이스를 종료 SQL>conn / as sysdba SQL>shutdown immediate (또는 shutdown abort) 2. 현재 DB에 대해 cold backup을 실시 (cold backup에 관한 사항은 이전 강좌를 참고) (데이터파일과 리두 로그 파일, 컨트롤 파일도 같이 백업) 3. 마운트 단계까지 DB 시작 SQL>startup mount 4. 가장 최근에 백업된 데이터 파일로부터 복원 SQL>host copy c:\backup\*.dbf c:\oracle\oradata\wink\ (윈도우) SQL>!cp /backup/*.dbf /oracle/oradata/wink(유닉스 계열) 5. LOG_ARCHIVE_DEST로 지정된 아카이브 로그 폴더에 아카이브 로그 파일이 있는지 확인 (만약 Archive Log가 있는 디스크에 장애가 있어 접근이 어렵다면 아카이브 파일을 임의의 장소에 저장하고 alter system archive log start to ‘디렉토리이름’ 명령으로 변경 합니다) 6. recover 명령으로 1월9일 오전 10시 이전으로 복구(여기서는 9시 55분 상태로 복구) SQL>recover database until ‘2005-01-09 09:55:00’ 7. resetlogs 옵션을 이용하여 DB를 Open SQL>alter database open resetlogs; 8. 삭제된 emp 테이블이 있는지 확인 9. 복구 완료를 확인 하였으면 DB를 종료 후 cold backup을 한 후 Archive Log를 삭제 이상과 같은 방법으로 Time-Base Recovery를 진행하면 되지만 개인적인 생각 입니다만 Export Utility를 이용하여 매일매일 DB를 백업 받아 두었다면 Import를 이용하여 간단하게 복구를 진행 할 수 있을 것 같습니다. (물론 대량의 데이터를 매일매일 Export 한다는 것이 부담스러울 수도 있지만 말입니다. 제가 과거에 백화점에 근무 할 때도 매일매일 export로 전체 DB를 백업 받았던 기억이 납니다… ) [출처] 오라클자바커뮤니티 - http://www.oraclejavanew.kr/bbs/board.php?bo_table=LecBACKUP&wr_id=2

Time Base Recovery

오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터

(신입사원채용무료교육, 오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷)  

중요한 테이블이나 테이블의 데이터를 삭제 했을 때의 복구 방법 입니다.

관리자는 2005년 1월 10일 10시 30분경에 전날(1월9일) 오전 10시 무렵에 중요한 emp 테이블을 실수로 삭제 했다는 보고를 받았습니다.


-----------------------------
복구 과정
-----------------------------

1.        현재 데이터베이스를 종료

SQL>conn / as sysdba
SQL>shutdown immediate (또는 shutdown abort)

2.        현재 DB에 대해 cold backup을 실시 (cold backup에 관한 사항은 이전 강좌를 참고)
(데이터파일과 리두 로그 파일, 컨트롤 파일도 같이 백업)

3.        마운트 단계까지 DB 시작

SQL>startup mount

4.        가장 최근에 백업된 데이터 파일로부터 복원

SQL>host copy c:\backup\*.dbf c:\oracle\oradata\wink\ (윈도우)

SQL>!cp /backup/*.dbf /oracle/oradata/wink(유닉스 계열)

5.        LOG_ARCHIVE_DEST로 지정된 아카이브 로그 폴더에 아카이브 로그 파일이 있는지 확인 (만약 Archive Log가 있는 디스크에 장애가 있어 접근이 어렵다면 아카이브 파일을 임의의 장소에 저장하고 alter system archive log start to ‘디렉토리이름’ 명령으로 변경 합니다)


6.        recover 명령으로 1월9일 오전 10시 이전으로 복구(여기서는 9시 55분 상태로 복구)

SQL>recover database until ‘2005-01-09 09:55:00’

7.        resetlogs 옵션을 이용하여 DB를 Open

SQL>alter database open resetlogs;

8.        삭제된 emp 테이블이 있는지 확인

9.        복구 완료를 확인 하였으면 DB를 종료 후 cold backup을 한 후 Archive Log를 삭제


이상과 같은 방법으로 Time-Base Recovery를 진행하면 되지만 개인적인 생각 입니다만 Export Utility를 이용하여 매일매일 DB를 백업 받아 두었다면 Import를 이용하여 간단하게 복구를 진행 할 수 있을 것 같습니다. (물론 대량의 데이터를 매일매일 Export 한다는 것이 부담스러울 수도 있지만 말입니다. 제가 과거에 백화점에 근무 할 때도 매일매일 export로 전체 DB를 백업 받았던 기억이 납니다… )


댓글 없음:

댓글 쓰기