JYEONNI
Undo Extent / segment 본문
Oracle에서 Undo 세그먼트(또는 롤백 세그먼트)는 트랜잭션에서 발생하는 변경 내용을 저장하는 공간입니다. Undo 세그먼트는 트랜잭션이 롤백되거나, 데이터베이스에서 필요한 데이터를 읽을 때 사용됩니다.
Undo segment의 사용용도
- rollback 명령문시 트랜잭션 rollback
- database 복구
- 읽기일관성 제공
- flashback 기능을 사용하여 논리적 복구
- flashback query를 사용하여 이전시점의 데이터 분석
데이터베이스 복구중에 우선 리두로그를 사용하여 커밋되지않은 데이터까지 복구를 수행하고, 그 이후 undo를 사용하여 커밋된 데이터만 rollback하여 데이터베이스 복구를 수행합니다.
시스템 Undo 세그먼트와 사용자 Undo 세그먼트.
시스템 Undo 세그먼트:
시스템 Undo 세그먼트는 Oracle 데이터베이스에서 필요한 시스템 레벨의 작업에 사용됩니다. 주로 시스템 관리 작업과 관련이 있습니다.
사용자 Undo 세그먼트:
사용자 Undo 세그먼트는 사용자 트랜잭션에서 발생하는 변경 내용을 저장하는 데 사용됩니다. 각 사용자 세션은 자체 사용자 Undo 세그먼트를 가지고 있습니다.
Undo 세그먼트의 종류:
Online Undo 세그먼트: 트랜잭션이 실행될 때 생성되고 적용되며, 롤백을 지원합니다.
Offline Undo 세그먼트: 데이터베이스가 재시작될 때 생성되고 적용되며, 주로 Recovery 관련 작업에서 사용됩니다.
Undo 테이블스페이스:
Undo 세그먼트는 주로 UNDOTBS 또는 사용자 정의 Undo 테이블스페이스에 속합니다.


현재 데이터베이스 인스턴스에서 사용중인 모든 undo segment에 대한 정보를 보려면 다음과같다.

UNDO 사용량 조회하는 명령입니다. DB의 DML작업이 많아 UNDO 테이블스페이스에 대한 사용량 조회가 필요할때 사용할수있는 쿼리입니다.
ACTIVE : 현재 UNDO를 사용하고 있는 영역
UNEXPIRED : UNDO 작업종료, UNDO_RETENTION값이 아직 지나지 않은 영역
EXPIRED : UNDO_RETENTION값이 지난 값으로 UNDO 부족시 rewrite 될 수 있는 영역

인스턴스가 사용하고 있는 undo segment를 보여줍니다.
Oracle undo 자동관리/수동관리
Oracle에서 undo 세그먼트와 익스텐트를 자동으로 관리하려면 UNDO_MANAGEMENT 초기화매개변수를 사용합니다. 이 매개변수의 값에 따라 자동 및 수동관리가 결정됩니다.
자동관리모드는 일반적으로 권장(11g~)되며, 시스템이 자동으로 Undo공간을 관리하게 됩니다.
undo management 파라미터를 auto로 설정하는것이 자동관리모드,
수동관리 모드로 설정하는것 : ALTER SYSTEM SET UNDO_MANAGEMENT = MANUAL;
자동모드로 관리하고 있기때문에, DBCA로 DB를 설치하면 기본적으로 UNDOTBS1이 생성이 됩니다.
CREATE UNDO TABLESPACE undotbs1 DATAFILE '/path/to/undotbs01.dbf' SIZE 100M;
수동관리모드에서 자동관리모드로 전환한 후 필요에따라 자동관리모드로 전환할수있다.
주의사항입니다
자동 관리 모드를 사용하면 Oracle이 Undo 세그먼트 및 익스텐트를 자동으로 생성하고 관리합니다. 반면에 수동 관리 모드에서는 직접 롤백 세그먼트를 생성하고 관리해야 합니다.
자동 관리 모드가 권장되며, 특별한 이유가 없는 한 수동 관리 모드를 선택하지 않는 것이 일반적입니다.
자동 관리 모드에서는 UNDO_RETENTION 설정에 따라 Undo 공간이 일정 기간 동안 보관됩니다. 수동 관리 모드에서는 개발자가 직접 보관 기간을 관리해야 합니다.
Oracle 데이터베이스 버전에 따라 세부 구성 요소 및 설정이 다를 수 있습니다. 필요에 따라 해당 버전의 문서를 참조하는 것이 좋습니다.
'Oracle DB' 카테고리의 다른 글
| Hot backup복구 (0) | 2023.11.21 |
|---|---|
| RMAN Backup (0) | 2023.11.20 |
| Oracle - ASM (0) | 2023.11.08 |
| Temporary tablespace (0) | 2023.11.05 |
| undo tablespace 파라미터 변경 (0) | 2023.11.05 |