[Oracle] Archive Log Mode에서의 불완전복구
불완전 복구란 장애 시점 이전으로 데이터베이스를 돌리는 방식으로 사용자가 중요한 테이블이나 테이블스페이스를 삭제 하는 경우나, 복구에 필요한 아카이브 로그 파일의 손실로 인해 손실이 일어나기 전까지 복구를 수행하는 방식으로 나누어 집니다.
Time-Based Incomplete Recovery
- Database Mode : Archive Log Mode
- Database 상태 : OPEN상태
- 백업 : 2007년 8월15일 Full Backup과 Archive를 전부 가지고 있음
- 장애 발생 : 2007년 8월17일 오전 9시경 INSA 테이블을 삭제 했다는 통보를 받았고, 이 테이블은 논리적인 백업을 두지 않았다.
- 복구 계획 : INSA 테이블은 중요한 정보가 들어 있으므로 복구가 필요하다고 판단, 현재 데이터베이스 전체를 장애가 나기 바로 전 시점으로 돌리기로 복구 계획을 수립
복구 순서
- 1. Database를 Mount
- 2. 데이터 베이스를 과거 시점으로 돌려야 하므로 모든 데이터 파일을 복사
- 3. 에러가 나기 바로 전 시점으로 돌리기 위해 백업 이후의 ARCHIVE를 적용
- 4. Database를 RESETLOGS를 이용 OPEN (RESETLOGS는 LOG SEQUENCE 번호를 1로 맞추어 주는 기행을 수행)
장애상황 발생
INSA 테이블을 생성 한 후 시간을 확인한 후 에러 상황을 만듦
복구실패 대비를 위한 백업 실행
데이터베이스를 SHUTDOWN 하고, 복구 실패에 대비하기 위해 지금 현재의 데이터 베이스 파일을 전부 복사해 둔다
데이터파일 RESTORE 실행
데이터베이스를 과거 시점으로 돌리기 위해서 MOUNT 단계에서 모든 데이터 파일을 RESTORE한다
복구 실행
위의 에러가 나기 전 시점인 2007-08-17:09:37:26초까지 데이터베이스를 돌린다. ARCHIVE를 자동으로 수행하기 위해서 SET AUTORECOVERY ON 명령어를 사용한다
RESETLOGS로 OPEN
TIME-BASED를 이용 데이터베이스를 과거 시점으로 돌렸으므로, RESETLOGS로 OPEN한다.그런 이후 INSA 테이블이 존재 하는지 확인하고, ARCHIVE번호도 확인한다.
백업수행
RESETLOGS를 이용 OPEN하였을 경우에는 LOG SEQUENCE 번호가 전부 변경되었으므로 이전의 백업본은 필요가 없으므로 반드시 백업을 수행한다.
Cancel-Based Incomplete Recovery
- Database Mode : Archive Log Mode
- Database 상태 : SHUTDOWN상태
- 백업 : 2007년 8월15일 Full Backup과 Archive를 전부 가지고 있음
- 장애 발생 : insa01.dbf파일이 손실 되어 Complete Recovery를 수행하려고 시도 하였으나, 변경 이후의 Archive가 전부 존재 하지 않음.
- 복구 계획 : INSA 테이블은 중요한 정보가 들어 있으므로 복구가 필요하다고 판단, 현재 데이터베이스 존재하는 archive 까지만 복구 하기로 계획
복구순서
- 1. Database를 Mount
- 2. 데이터 베이스를 과거 시점으로 돌려야 하므로 모든 데이터 파일을 복사
- 3. 에러가 나기 바로 전 시점으로 돌리기 위해 백업 이후의 ARCHIVE를 적용
- 4. Database를 RESETLOGS를 이용 OPEN (RESETLOGS는 LOG SEQUENCE 번호를 1로 맞추어 주는 기행을 수행)
장애상황 발생
DB가 SHUTDOWN된 상태에서 INSA01.DBF가 손상되었고, ARC00037,001 ARCHIVE도 손상되었음. 현재 데이터파일이 존재 하지 않으므로 MOUNT 단계까지만 데이터베이스가 올라옴
COMPLETE RECOVERY 수행
처음에는 COMPLETE RECOVERY를 수행.그러나 아카이브 파일이 존재 하지 않으므로 에러가 난다
CANCEL-BASED RECOVERY 수행
결국 이전 ARCHIVE까지만 수행하기 위해, CANCEL-BASED를 이용해 데이터베이스를 복구 한다
해당 아카이브를 요구 할 때 cancel 명령어를 수행
RESETLOGS 오픈
데이터베이스를 RESETLOGS를 이용 OPEN한다
INSA 테이블이 존재하는지 확인한다
BACKUP-Control File을 이용한 불완전 복구
- Database Mode : Archive Log Mode
- Database 상태 : OPEN 상태
- 백업 : 2007년 8월15일 Full Backup과 Archive를 전부 가지고 있음
- 장애 발생 : 테이블 INSA 스페이스가 삭제 되었고, ARCHIVE파일도 유실
- 복구 계획 : INSA 테이블스페이스는 은 중요한 정보가 들어 있으므로 복구가 필요하다고 판단 Database를 Mount
복구순서
1. 데이터 베이스를 과거 시점으로 돌려야 하므로 모든 데이터 파일을 복사하고, 테이블 스페이스가 삭제되면 현재 CONTROLFILE에도 존재하지 않으므로 복구되지 않으므로 백업본을 이용하기 위해 CONTROLFILE도 복사한다
2. 에러가 나기 바로 전 시점으로 돌리기 위해 백업 이후의 ARCHIVE를 적용
3. Database를 RESETLOGS를 이용 OPEN (RESETLOGS는 LOG SEQUENCE 번호를 1로 맞추어 주는 기행을 수행)
테이블 스페이스가 삭제된 시점을 확인하기 위해 ALERT 파일을 확인
모든 데이터파일과 CONTROLFILE을 복사한 이후 TIME-BASED 방법을 이용
데이터베이스를 RESETLOGS를 이용하여 OPEN한 이후 데이터를 확인한다.