[Admin] Instance Failure & Recovery

2025. 3. 18. 10:33·oracle DB

Instance Failure & Recovery 개념

Oracle 데이터베이스에서 인스턴스 장애(Instance Failure) 및 복구(Recovery) 과정을 나타냅니다.

 

1. 장애 발생 전 트랜잭션 흐름

tx51 트랜잭션 실행 (빨간색)

  • UPDATE emp SET salary=2000 WHERE id=1;
  • COMMIT 수행
  • 변경된 데이터는 SGA(Buffer Cache)와 Redo Log Buffer에 저장
  • LGWR(Log Writer) 프로세스가 Redo Log File로 변경 사항을 기록

tx52 트랜잭션 실행 (파란색)

  • UPDATE A → B 수행
  • 아직 COMMIT 되지 않음 (Uncommitted Transaction)

 

2. 인스턴스 장애 발생

SGA(Buffer Cache) 내의 변경 사항은 손실됨

Redo Log File 및 UNDO에는 여전히 변경 내역이 남아있음

 

 

3. 인스턴스 복구 (Instance Recovery)

SMON(System Monitor Process) 자동 복구 수행

  • Redo Log를 이용해 COMMIT된 트랜잭션(tx51)의 변경사항을 재적용 (ROLLFORWARD)
  • UNDO 정보를 이용해 COMMIT되지 않은 트랜잭션(tx52) 롤백(ROLLBACK)
  • 데이터 일관성을 유지하며 복구 완료

 

Instance Failure & Recovery 1

  • tx51은 commit되었으므로 데이터 반영됨
  • tx52는 rollback되어 변경 사항이 무효화됨

 

그림 요소 분석

1. Shared SQL Area

  • 실행 중이던 SQL정보 및 변경데이터 저장
  • 인스턴스 장애 시 손실됨

2. Redo Log File

  • LGWR가 변경사항을 기록
  • 장애 발생 시 복구를 위해 사용됨

3. Data File

  • 실제 데이터가 저장되는 공간
  • Redo Log를 통해 복구 수행

4. UNDO Tablespace

  • 변경 전 데이터를 보관하여 ROLLBACK 가능
  • 비정상 종료된 트랜잭션을 되돌리기 위해 사용됨

 

1. 장애 발생 이후 데이터베이스 재시작

  • sql> startup 실행
  • DB Instance 시작 (Instance Started) → DB Mounted → DB Opened

2. SMON (System Monitor) 프로세스가 복구 수행

① Rolling Forward (Redo 적용)

  • Redo Log File을 이용해 커밋된 트랜잭션(tx51)의 변경 사항을 재적용
  • 데이터파일(Data File)에 저장되지 않은 변경사항을 다시 기록하여 데이터 정형성을 유지

② Rollback (Undo 적용)

  • 커밋되지않은 트랜잭션(tx52)의 변경사항을 롤백
  • Undo Tablespace를 사용해 tx52에서 변경한 데이터를 원래 값으로 복원

 

Instance Failure & Recovery 2

  • SMON이 Rolling Forward를 시작
  • tx51이 Commit 완료된 트랜잭션이므로 Redo Log를 사용해 복구 중
  • tx52는 아직 롤백되지 않은 상태

 

Instance Failure & Recovery 3

  • Rolling Forward 완료 후 Rollback 진행
  • tx52가 롤백되며 데이터 변경 사항 취소
  • 최종적으로 데이터베이스가 정합성을 유지하며 정상적으로 오픈됨

 

결론

✅ Redo Log를 이용한 Rolling Forward → 커밋된 트랜잭션 복구
✅ Undo를 이용한 Rollback → 비정상 종료된 미완료 트랜잭션 취소
✅ SMON(System Monitor) 프로세스가 자동으로 복구 진행

 

 

  • Oracle은 Redo Log + Undo Tablespace를 활용해 장애 발생 시 자동 복구 수행
  • SMON이 자동으로 Instance Recovery를 진행
  • COMMIT된 트랜잭션은 유지되고, 미완료 트랜잭션은 ROLLBACK 처리됨

 

'oracle DB' 카테고리의 다른 글

[성취도평가] 빅데이터 저장을 위한 데이터베이스 구축 및 운영  (0) 2025.03.18
[Admin] Redo Log File, Log Switch, Log Sequence Number Multiplexing 정리  (0) 2025.03.18
[Admin] WS 복습 ★  (0) 2025.03.17
[Admin] CDB  (0) 2025.03.17
[Admin] 9. 언두 데이터 관리 _  (0) 2025.03.12
'oracle DB' 카테고리의 다른 글
  • [성취도평가] 빅데이터 저장을 위한 데이터베이스 구축 및 운영
  • [Admin] Redo Log File, Log Switch, Log Sequence Number Multiplexing 정리
  • [Admin] WS 복습 ★
  • [Admin] CDB
strongyoung
strongyoung
  • strongyoung
    all is well
    strongyoung
  • 전체
    오늘
    어제
    • 분류 전체보기 (78)
      • Healthcare (4)
        • Data Architecture (1)
        • Intern (3)
      • oracle DB (28)
      • Bio analysis (11)
        • ML (2)
        • mini project (1)
        • final project (0)
      • Project (1)
      • paper (3)
        • paper review (1)
      • study (16)
        • certificate (12)
      • coding test (14)
        • Programmers_Python (10)
        • Programmers_OracleSQL (0)
        • 구름LEVEL_Python (4)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스
    구름레벨
    Oracle
    1단계코테
    구름LEVEL
    oracledbms
    코테1단계
    의료영상분할
    인스턴스복구
    코딩입문
    코테
    프로그래머스입문
    Admin
    DBA
    oracle ws
    구름레벨파이썬
    오라클
    구름레벨코테
    파이썬
    코딩테스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
strongyoung
[Admin] Instance Failure & Recovery
상단으로

티스토리툴바