개발/데이터베이스
[Oracle] Undo(언두)란
미니시리
2022. 1. 3. 01:12
데이터베이스의 변경사항을 롤백하거나 실행 취소하는데 사용되는 정보를 생성하고 관리합니다. 이러한 정보는 주로 커밋(Commit)되기 전의 트랜잭션 작업에 대한 기록으로 구성됩니다.
사용 용도
- Rollback 명령문 시 트랜잭션 Rollback
- Data base 복구
- 읽기 일관성 제공
- Flashback 기능을 사용하여 논리적 복구
- Flashback Query 사용하여 이전 시점의 데이터 분석
특징
- 트랜잭션 작업 기록
- 데이터를 변경하는 모든 트랜잭션에 대해 캡처된다.
- 적어도 트랜잭션이 종료될 때 까지는 보존된다.
- 지원하는 작업 :
- 롤백 작업
- 읽기 일관성 Query
- Oracle Flashback Query, Oracle Flashback Transaction, 및 Oracle Flashback Table
- 실패한 트랜잭션 recovery
트랜잭션 및 언두 데이터
- 각 트랜잭션은 하나의 언두 세그먼트에만 할당된다.
- 하나의 언두 세그먼트는 한 번에 여러 개의 트랜잭션을 처리할 수 있다.
Undo(언두) 데이터와 Redo(리두) 데이터 비교
언두 | 리두 | |
기록 내용 | 변경 사항을 언두하는 방법 | 변경 사항을 재생성하는 방법 |
사용 목적 | 롤백, 읽기 일관성, Flashback | 데이터베이스 변경사항 롤포워드 |
저장 위치 | 언두 세그먼트 | 리두 로그 파일 |
언두 관리
자동 언두 관리
- 전용 언두 테이블스페이스에서 언두 데이터 및 Undo space 관리 완전 자동화
- 모든 세션에 대해 적용
- 장기 실행 Query를 충족하도록 AUTOEXTEND 데이블 스페이스 자체 튜닝
- Retention을 최적화 하도록 고정 크기 테이블스페이스에서 자체 튜닝
Flashback 작업을 지원하는 DBA 작업
- 언두 Retention 구성
- 언두 테이블스페이스를 고정 크기로 변경
- 공간 및 "Snapshot too old" 오류 방지
언두 카테고리
카테고리 | 설명 |
활성 : 커밋되지 않은 언두 정보 | 활성 트랜잭션을 지원하며 uncommit 언두 정보는 덮어쓰이지 않는다. |
만료되지 않음 : 커밋된 언두 정보 | 언두 retention 범위 내에 있어야 한다. |
만료됨 : 만료된 언두 정보 | 활성 트랜잭션을 위한 공간이 필요하면 덮어쓰인다. |