추가 확인 필요사항
- 장애발생한 logfile이 해당 시점에 current/inactive/active 유추 가능한가?
- 책의 저자의 case 3~5에서 장애발생원인 파일을 찾는 것과 current를 찾는 근거가 똑같음
- unarchived clear -> Drop&Create하면 , 최초 Drop전에 발생된 데이터변경은..? (current/active의..)
case 1. 대기중인 그룹의 멤버가 1개만 장애 발생할 경우
설명
- 문제는 발생하지 않음 (오라클 권장사항 : 그룹 최소 2개, 그룹별 멤버 1개).
- 다만 최소조건 불충족에 의한 장애를 방지위해 alertlog를 확인하고 조치를 해야함
- Errors in file /data/arc1/1_36_1072647549.arc:
ORA-00313: open failed for member of log group 1 of thread 1
ORA-00312: online log 1 thread 1: 'oradata/EHR/redo01_a.log'
ORA-27037: unable to obtail file status
- Errors in file /data/arc1/1_36_1072647549.arc:
스크립트
- 상태조회
select a.group#,a.member,b.bytes/1024/1024 MB,b.archived,b.sequence# "SEQ#",b.status
from v$logfile a, v$log b
where a.group#=b.group#
order by 1,2;
- 멤버 재생성
alter database drop logfile memeber '/oradata/EHR/redo01_a.log';
alter database add logfile member '/oradata/EHR/redo01_a.log' to group 1;
case 2. 대기중인 그룹 중 archive가 완료된 그룹이 지워진 경우
설명
- 재기동(Startup시 mount가 됨) 혹은 archivelog내 아래 메시지 발생 및 삭제된 대상 조회시 ARC=YES일 경우
그룹 삭제 후 재생성- ORA-00313: open failed for member of log group 2 of thread 1
ORA-00312: online log 2 thread 1: 'oradata/EHR/redo02_a.log'
ORA-00312: online log 2 thread 1: 'oradata/EHR/redo02_b.log'
- ORA-00313: open failed for member of log group 2 of thread 1
스크립트
- 그룹 삭제 후 재생성
alter database drop logfile group 2;
alter database add logfile group 2
('/oradata/EHR/redo02_a.log','/oradata/EHR/redo02_b.log') size 5M;
case 3. 대기중인 그룹 중 archive가 완료 안된 그룹이 지워진 경우 - DB Open/close
+ Current그룹이 삭제된 경우 - DB open
+ 전체 redo log가 삭제된 경우 - db open
공통
- 삭제된 파일은 controlfile내 redolog정보를 통해 복구가 가능하며,
archivelog가 없기 때문에 unarchived clear를 수행.
대기중인 그룹 중 archive가 완료 안된 그룹이 지워진 경우 - DB Open 와
Current그룹이 삭제된 경우 - DB open
- unarchived clear 수행후 logswitch중 하단의 alertlog 발생
- alertlog : ORA-00314: log ? of thead ?,expected sequence# ? doesn't match 0
- 조치 방법
- 해당 group에 대한 unarchived clear 재수행 (파일 삭제시도시 archive가 안된 그룹 삭제 불가) →
group 삭제 및 생성 진행
- 해당 group에 대한 unarchived clear 재수행 (파일 삭제시도시 archive가 안된 그룹 삭제 불가) →
전체 redo log가 삭제된 경우 - db open
- 조치 방법
- logswitch (에러발생시까지) -> 가장 SEQ#가 낮은 것부터 하나씩 unarchived clear -> Drop group -> Create group -> logswitch (에러발생시까지) -> ..반복
대기중인 그룹 중 archive가 완료 안된 그룹이 지워진 경우 - DB close의 경우
- redolog에 대한 오라클 권장사항이 충족되지 않는 상태가 장기 지속될 경우 DB가 비정상 종료됨
(logswitch발생시 아카이빙이 되지 않고 hang발생 -> DB비정상종료) - 조치방법
- startup 실행시 mount상태가 되며, redolog상태 조회를 통해 문제원인 그룹 확인 가능 (SEQ#최소값)
해당 group에 대한 unarchived clear 재수행 (삭제 불필요)
- startup 실행시 mount상태가 되며, redolog상태 조회를 통해 문제원인 그룹 확인 가능 (SEQ#최소값)
case4. Current그룹이 삭제된 경우 - Shutdown immediate
설명
- commit된 데이터가 모두 데이터파일에 정상 저장되어 데이터의 소실은 발생하지 않는다.
조치 방법
- Startup(mount) -> recovery databse until cancel -> alter database open resetlogs;
스크립트
- unarchived clear를 통한 멤버재생성
alter databse clear unarchived logfile group 1;
case5. Current그룹이 삭제된 경우 - Shutdown abort로 종료 - backup 존재
+전체 redo log가 삭제된 경우 - db close 상태 -백업 존재
설명
- 삭제된 redolog 그룹이 current상태일때 발생된 scn(변경이력)은 복구 불가
그 전까지 복구 가능
조치 방법
- 삭제된 redolog의 sequence 번호 조회 (해당 시퀀스에서 cancel 필요) -> shutdown abort
-> 모든 데이터파일 복원 -> start mount -> recover database until cancel
-> ORA-00280: ...in sequence ($해당 시퀀스) : cancel-> alter database open resetlogs;
case6. Current그룹이 삭제된 경우 - Shutdown abort로 종료 - backup/archivelog 미존재
+전체 redo log가 삭제된 경우 - db close 상태 -백업 미존재
- 복구 성공 가능성이 낮으므로 아카이브로그와 백업을 잘 받아야함
참고사이트
- 테스트 이력 소실되었고, 이해가 되지 않는 부분이 있어 아래 사이트를 통해 추가정보는 확인
redolog 장애처리 순서도
테스트 내용
'Oracle > 백업과 복구' 카테고리의 다른 글
[논리적 백업/복구] IMPORT/EXPORT & DATAPUMP (0) | 2022.03.23 |
---|---|
[논리적 백업/복구] Flashback (0) | 2022.03.23 |
[물리적 백업/복구] 복구-data file (0) | 2022.03.23 |
[물리적 백업/복구] 백업 (0) | 2022.03.23 |
[물리적 백업/복구] RMAN (0) | 2022.03.23 |