데이터변경 --> 이미지 생성

  • Before Image : 데이터 변경 전의 기존 데이터, 언두 데이터라고 함.
  • After Image : 데이터 변경 후의 데이터

1. 데이터가 변경되는 과정
1) 사원 테이블에 사번을 update 구문이 요청됨
2) 공유 풀에 접근하여 SQL 처리
3) 일반 테이블스페이스에서 해당되는 데이터 블록을 버퍼 캐쉬에 복사하고 변경하고자 하는 행에 lock을 적용한다.
4) 언두 테이블스페이스에 위치한 언두 세그먼트에서 사용 가능한 블록을 버퍼 캐시에 복사한다.
5) 버퍼 캐시에 복사된 언두 세그먼트 블록에 변경 전 이미지를 저장한다.
6) 리두 로그 버퍼에 리두 정보를 저장한다.
7) 버퍼 캐쉬에 복사된 고객 테이블 블록에 변경 후 이미지를 저장한다.

--> 언두 세그먼트는 위 데이터 변경 과정중 4,5 단계에서 사용
--> 언두 세그먼트는 변경 전 이미지를 저장하는 세그먼트라고 정의 할 수 있다.

2. 언두 세그먼트의 역할
1) 트랜잭션 롤백
2) 인스턴스 복구
3) 읽기 일관성 보장

3. 인스턴스 복구 시 커밋되지 않은 변경 데이터에 대한 복구 방법
1) SMON이 리두 로그 파일의 정보를 읽어서 모든 변경 데이터를 실행 <-- 롤 포워드 수행
2) 언두 세그먼트에 저장된 변경 전 이미지를 적용시켜서 커밋되지 않은 데이터를 롤백 한다.

4. 언두 세그먼트의 종류

5. 트랜잭션과 언두 세그먼트와의 관계

  • 하나의 트랜잭션은 하나의 언두 세그먼트만 사용한다.
  • 하나의 언두 세그먼트는 여러 트랜잭션이 공유하여 사용
  • 언두 데이터 블록은 공유될 수 없고, 하나의 트랜잭션이 독점적으로 사용한다.