1. 언두 세그먼트 구조
- 언두 세그먼트 헤더 : 언두 세그먼트의 첫번째 익스텐트의 첫번째 블럭으로 언두 세그먼트 관리정보 및 트랜잭션 정보가 저장된다.
- 언두 블럭 : 언두 데이터가 저장
1.1 언두 블럭
- 언두 데이터와 언두 데이터 블록을 사용하는 트랜잭션의 ID를 기록
- 언두 데이터 블럭은 동시에 하나의 트랜잭션만 이용가능하다.
1.2 언두 세그먼트 헤더
1.2.1 언두 세그먼트 헤더 저장되는 주요 정보
- 리텐션 테이블 : 각 언두 익스텐트를 사용한 트랜잭션의 마지막 커밋 시간을 저장, 이 정보로 언두 유지 시간을 관리
- 익스텐트 컨트롤 헤더 : 언두 세그먼트가 소유한 익스텐스 갯수, 언두 세그먼트 헤더를 제외한 전체 언두 블록의 갯수, HWM 정보가 저장
- 익스텐트 맵 : 언두 세그먼트가 소유한 각 익스텐트들의 물리적 위치와 소유한 블록의 갯수를 저장
- 트랜잭션 컨트롤 : 트랜잭션 테이블 헤더라고도 하며, 트랜잭션 테이블에 대한 관리 정보를 저장
- 트랜잭션 테이블 : 트랜잭션 슬롯이 저장된다. (트랜잭션 슬롯에는 언두 세그먼트를 사용하고 있는 트랜잭션의 정보와 트랜잭션이 가장 마지막에 사용한 언두 데이터 블록의 주소 값 및 기타 정보가 기록되어있다. )
2. 언두 영역의 덤프파일 생성
언두 세그먼트 헤더 블록 덤프 수행할 수 있다. 덤프 파일은 USER_DUMP_DEST 위치에 저장된다.
-- :UNDO_SEG는 덤프를 수행하고자 하는 언두 세그먼트 이름이다.
alter system dump undo header ":UNDO_SEG";
언두 세그먼트의 이름은 DBA_ROLLBACK_SEGS의 SEGMENT_NAME컬럼으로 확인이 가능하다.
덤프 파일 중 트랜잭션 테이블에 대한 정보는 다음과 같다.
주요 항목의 의미는 다음과 같다.