Oracle Undo 세그먼트 구조

Oracle 데이터베이스에서 Undo 세그먼트는 트랜잭션에 의해 수행된 변경 내용을 롤백하기 위해 사용되는 공간입니다. 

 

Undo 세그먼트는 주로 롤백 세그먼트라고도 불리며, 트랜잭션의 변경 내용을 보관하여 해당 트랜잭션이 롤백될 때 이를 이용해 데이터베이스를 이전 상태로 되돌릴 수 있도록 합니다.



Undo 세그먼트의 구조는 다음과 같습니다:

1. Extent(익스텐트):  Undo 세그먼트는 하나 이상의 익스텐트로 구성됩니다. 

익스텐트는 데이터베이스에서 할당된 연속적인 블록 그룹을 나타냅니다.

2. Segment Header(세그먼트 헤더):  Undo 세그먼트는 세그먼트 헤더를 가지고 있습니다. 

세그먼트 헤더는 세그먼트에 대한 메타데이터 정보를 저장하며, 세그먼트의 크기, 현재 사용 중인 익스텐트 등을 추적합니다.

3. Transaction Table(트랜잭션 테이블): Undo 세그먼트에는 트랜잭션 테이블이라고 불리는 특수한 데이터 구조가 있습니다. 트랜잭션 테이블은 현재 활성화된 트랜잭션에 대한 정보를 추적합니다. 이 정보에는 트랜잭션 ID, 시작 및 종료 시간, 사용 중인 언도 익스텐트 등이 포함됩니다.

4. **Undo 데이터 레코드:** 

Undo 세그먼트에는 실제로 변경 내용을 저장하는 데이터 레코드가 포함되어 있습니다. 각각의 트랜잭션에 대해 해당 트랜잭션이 수행한 변경 내용(예: 행 삭제, 업데이트 등)이 저장됩니다.

Undo 세그먼트는 트랜잭션이 커밋되거나 롤백될 때까지 데이터를 유지하며, 롤백이 필요한 경우 해당 트랜잭션의 변경 내용을 이용하여 데이터베이스를 이전 상태로 복원합니다. 이러한 Undo 메커니즘은 데이터베이스의 일관성과 무결성을 보장하는 데 중요한 역할을 합니다.

'데이터 아키텍처 & 처리기술 & DBMS > Oracle' 카테고리의 다른 글

테이블 레벨 Lock 읽기 일관성 확보  (0) 2023.12.21
문장수준 읽기 일관성  (0) 2023.12.21
Block-Level Lock  (0) 2023.12.21
Lock Byte  (0) 2023.12.21
Undo  (0) 2023.12.21