UNDO SEGMENT
Undo 용도
- Transaction Rollback
- Transaction Recovery
- Read Consistency
Undo Segment Header
- undo 세그먼트 중 첫번째 익스텐트, 그중에서도 첫번째 블록에 Undo 세그먼트 헤더 정보가 있다.
- undo segment header에는 트랜잭션 테이블 슬롯(transaction table slot)이 존재. 가지고 있는 정보는 아래와 같다.
- 트랜잭션 ID
- ID 정보 : undo segment 번호, 트랜잭션 slot 번호, sequence 번호
- 트랜잭션 상태정보
- 커밋 SCN
- Last Undo Block Address
- 등등
- 참고로 트랜잭션 ID는 undo segment와 transaction table slot 할당 이전에는 생기지 않는다.
A transaction ID is not allocated until an undo segment and transaction table slot are allocated, which occurs during the first DML statement. https://docs.oracle.com/en/database/oracle/oracle-database/21/cncpt/transactions.html#GUID-31319EA7-994C-4D25-8814-0214ABD3CBDA
DML이란?
DML(Data Manipulation Lanaguge)의 정의
SELECT를 포함하는 곳도 있고, 제외하는 곳도 있다. 여기서는 오라클 공식문서에서 언급하는 정의를 사용
Data manipulation language (DML) statements add, change, and delete Oracle Database table data.(https://docs.oracle.com/en/database/oracle/oracle-database/19/tdddg/dml-and-transactions.html#GUID-3BE9310F-0AC5-4F75-9AA7-B7A843C14E2F)
- 언급 이유
- SELECT문은 쿼리 수행 시 undo 영역을 따로 할당받을 필요는 없다(FOR UPDATE는 예외)
ITL
- ITL(Interested Transaction List)란 특정 블록을 변경하고자 하는 트랜잭션의 목록을 의미하며 각 데이터 블록과 인덱스 블록 헤더에서 ITL slot을 관리한다.
- ITL slot에 기록되는 내용은 다음과 같다.
- ITL 슬롯 번호
- 트랜잭션 ID
- UBA
- 커밋 flag
- Locking 정보
- 커밋 SCN
Block cleanout