시간 기준 불완전 복구
사용자 실수 같은 논리 오류 직전 시각으로 데이터베이스 전체를 되돌리는 RMAN 시간 기준 불완전 복구의 절차와, 시각을 정확히 지정하기 위한 NLS_DATE_FORMAT 설정
#핵심 요약
SET UNTIL TIME으로 정한 시각 직전까지 데이터베이스 전체를 복원, 복구함
시간으로 정하면 데이터베이스가 그 시간에 맞는 SCN을 내부에서 정해 그 SCN까지 복구함
실습에서는 시, 분, 초까지 지정하려고 셸 환경 변수 NLS_DATE_FORMAT을 설정한 뒤 RMAN을 실행했음
복구 뒤 OPEN RESETLOGS로 열고 새 전체 백업을 받음
#개념과 동작 원리
시간 기준 불완전 복구는 완전 복구와 불완전 복구의 DBPITR을 시각으로 끝점을 정해 수행하는 것임
실습에서는 실습 전에 전체 백업을 받아 두고, 실수 직전 시각으로 데이터베이스 전체를 되돌렸음
정확한 시점이 필요하면 SCN 기준이 더 정확함
Flashback Table에서 타임스탬프와 SCN의 대응이 최대 약 3초 어긋날 수 있음
| 구분 | 뜻 |
|---|---|
| 완전 복구 | 장애 전 마지막 커밋 시점까지 복구 |
| 불완전 복구 | 과거 특정 시점으로 DB를 되돌림 |
불완전 복구가 필요한 상황: 완전 복구를 못 했을 때, 고객 요청으로 특정 시점으로 되돌려야 할 때, 실수로 사용자나 테이블스페이스를 DROP했을 때, CURRENT 또는 ACTIVE 리두 그룹의 멤버가 모두 사라졌을 때
종류는 시각 기준(time-based)과 로그 시퀀스 기준(cancel-based) 두 가지이며, 불완전 복구 뒤에는 RESETLOGS로 로그가 새로 시작되므로 바로 전체 백업을 받음
#필수 명령어 또는 SQL
#사전 전체 백업
BACKUP DATABASE;결과 해석: 개별 실행 출력은 기재 없음
#날짜 형식 설정
NLS_LANG=american_america.we8iso8859p15
NLS_DATE_FORMAT='RRRR/MM/DD:HH24:MI:SS'
export NLS_LANG
export NLS_DATE_FORMATSELECT sysdate FROM dual;결과 해석:
실습에서는 FROM daul로 철자가 틀렸음NLS_LANG의 문자 집합 부분(we8iso8859p15)은 실습 설정이며 데이터베이스 문자 집합과 맞는지는 기재 없음
공식 문서 대조 결과에서 UNTIL TIME과 NLS_DATE_FORMAT의 관계 문장은 확인 불가
#시간 기준 복구
SHUTDOWN IMMEDIATE
STARTUP MOUNTRUN {
SET UNTIL TIME = '<YYYY/MM/DD:HH24:MI:SS>';
RESTORE DATABASE;
RECOVER DATABASE;
}ALTER DATABASE OPEN RESETLOGS;BACKUP DATABASE;결과 해석: 개별 실행 출력은 기재 없음
#사용 조건과 주의사항
데이터베이스 전체가 지정 시각으로 돌아가므로 그 뒤의 모든 정상 작업도 사라짐
실수 시각을 찾는 방법(V$SQL, Flashback Query로 존재 여부 확인)은 Flashback Database의 실습에 있음