UNDO
Undo Data란 사용자가 DML을 수행할 경우 발생하는 원본 데이터를 말한다
이런 Undo Data만을 저장하는 Segment를 Undo Segment라고 한다
Undo Segment 를 저장하고 있는 특별한 Tablespace 가 Undo Tablespace 이다.
Undo Tablespace 는 관리자가 생성할 수 있고, 관리할 수 있지만
이 곳에는 Undo Data 외의 다른 데이터는 저장될 수 없으며
Undo Data 라고 하더라도 사용자가 관여할 수 없고 Oracle Server Process 가 직접 관리한다.
Undo Tablespace의 특징
- Oracle Server Process는 이 Tablespace에 undo segment를 생성한다
- 기본적으로 각 사용자 별로 undo segment를 할당해서 undo data를 관리하며 사용자는 관여할 수 없다.
- Undo tablespace는 Instance당 여러개가 동시에 존재할 수 있지만 사용되는 것은 한번에 1개 뿐이다
- 관리 방법은 자동, 수동이 있다
Undo Tablespace 의 사용 목적
1. Transaction Rollback - 사용자가 rollback 을 수행할 경우 이곳에 저장된 undo data 를 사용해서 rollback 하게 된다.
2. Read Consistency (읽기 일관성) - CR 작업을 통해 트랜잭션이 끝나지 않은 데이터는 변경 전 데이터를 보여준다.
3. Transaction Recovery (Instance Recovery) - 운영중이던 DB 서버가 비정상적으로 종료되었을 때 Roll Forward 와 Roll Backward 작업을 수행해서
Temporary Undo
- temporary objects (global temporary table(GTT), subquery factoring, the WITH clause)용 undo segment를 기존의undo tablespace에 저장하는 것이 아닌 temporary tablespace에 저장하는 기능이다.
- 기존 undo tablespace에 저장 시 문제점
- undo segment를 보호하기 위한 redo log가 발생한다. ( 성능상 문제)
- retention period를 충족시키기 위해 undo tablespace의 크기가 커진다
- temporary undo 기능은 redo log를 발생기키지 않으므로 성능면에서 이득이 있음
- 세션 파라미터 TEMP_UNDO_ENABLED 를 TRUE or FALSE로 설정하여 사용할 수 있다. (default = false)
- 세션에서 트랜잭션이 시작되기 전에 지정해야 하며 트랜잭션 진행중에 지정하면 무시된다.
- temporary undo 관련 statistics정보를 조회할 수 있는 V$TEMPUNDOSTAT뷰가 새로 등장함
'DBMS > ORACLE' 카테고리의 다른 글
[ORACLE] Source routing (소스 경로 지정 방식) (0) | 2023.02.09 |
---|---|
[ORACLE] FAILOVER (0) | 2023.02.09 |
[ORACLE] BIGFILE TABLESPACE (0) | 2023.02.09 |
[ORACLE] SET UNUSED (0) | 2023.01.06 |
[ORACLE] ROWID 정의 (0) | 2023.01.06 |