Oracle 10g 강좌
Overview of Segments 3 0 99,999+

by 구루비 SEGMENT UNDO 세그먼트 [2006.04.11]


Segment란?

  익스텐트 상위의 논리적인 데이터베이스 저장 수준을 세그먼트라고 하며, 하나의 세그먼트는 특정 논리적 구조에 할당된 익스텐트들로 구성 됩니다.

  Oracle은 각 table에 대해 하나 이상의 extent를 Table의 Data Segment에 할당하며 각 Index를 위해 하나 이상의 extent를 Index Segment에 할당 합니다.

 

Data Segments

  데이터 세그먼트는 클러스터 되지 않은 테이블, 클러스터 테이블, 파티션 테이블로 구분되어져 저장 됩니다.

  각각의 클러스터 되지 않은 테이블(SnapShot과SnapShot Log 포함)은 하나의 데이타 세그먼트를 갖습니다. 모든 테이블의 데이타는 자기 데이타 세그먼트의 익스텐트 내에 저장 됩니다.

  클러스터 테이블은 하나의 데이타 세그먼트를 갖습니다. 클러스터 내의 모든 테이블 데이타는 클러스터의 데이타 세그먼트 내에 저장됩니다.

 

Index Segments

  모든 일반 index와 partitioned index는 각각 자신의 모든 데이타를 저장하고 있는 하나의 인덱스 세그먼트를 갖습니다.

  세그먼트의 할당은 인덱스 생성시(CREATE INDEX)나, 인덱스 테이블 스페이스를 생성할때 STORAGE절을 통해 지정할 수 있습니다.

 

Temporary Segments

  임시 세그먼트는 SQL문의 완전한 실행을 위해 임시 작업 영역이 필요할 때 생성 됩니다. 명령문 실행이 끝나면 임시 세그먼트의 확장 영역은 이후 사용을 위해 시스템으로 복귀합니다.

  아래와 같은 명령은 Temporary Segments를 필요로 합니다.
      - CREATE INDEX - SELECT ... ORDER BY
      - SELECT DISTINCT ... - SELECT ... GROUP BY
      - SELECT . . . UNION - SELECT ... INTERSECT
      - SELECT ... MINUS

  CREATE TEMPORARY TABLESPACE로 임시 테이블스페이스를 생성해서 CREATE USER나, ALTER USER 명령시 지정 할 수 있습니다.

  TEMPORARY TABLESPACE를 지정를 지정하지 않으면 유저는 SYSTEM 테이블스페이스를 사용 합니다.

  Oracle9i는 부터는 DEFAULT TEMPORARY TABLESPACE를 생성해서 TEMPORARY TABLESPACE를 지정받지 않은 사용자가 SYSTEM 테이블스페이스를 사용하는 것을 방지 할 수 있습니다.

 

Undo Management

Rollback 세그먼트와 Undo 세그먼트의 관계

  Rollback과 Undo는 기본적으로는 동의어 입니다.

  Oracle 9i 이전엔 Rollback Segement라는 용어를 사용했는데, Oracle 9i 이후버전 부터는 Undo Segment라는 용어를 사용합니다.

  Rollback(Oracle 9i 이전 버전) = Undo(Oracle 9i 이후 버전)

  Undo 세그먼트는 관리 방식에 있어서 9i 이후 버전에서 자동 관리 모드와 수동 관리 모드를 선택 할 수 있는 기능이 추가 되었고, 트랜잭션 처리를 위한 알고리즘이 개선되었습니다.

  Undo 세그먼트는 생성, 할당 및 튜닝을 오라클 서버가 관리하므로 DBA는 더 이상 몇개의 Rollback 세그먼트를 생성 할 것인지, 크기는 어떻게 할 것인지, 트랜잭션에 따라 어떻게 할당할 것인지를 결정하지 않아도 됩니다.

Undo 세그먼트 사용 목적

  Undo Segments는 Transaction Rollback, 일기 일관성 유지(Read Consistency), Transaction Recovery를 위해 존재 합니다.

  Transaction Rollback
      - Oracle 서버에서 Undo Segment에 저장된 값을 이용해서 원래의 값으로 복원하는 기능을 말합니다.
      - Transaction Rollback이 실행되는 경우는 사용자가 Rollback command를 실행하거나, Transaction이 비정상 종료되어 PMON이 자동 Rollback 처리하는 경우 입니다.

  읽기 일관성
      - Transaction이 진행되는 동안 Database의 다른 사용자는 이 Consistent Read에 의해 Commit되지 않은 변경 사항을 볼 수 없는 기능 입니다.

  Transaction Recovery
      - Transaction이 진행되는 동안 Instance가 실패한 경우 Database가 다시 열릴 때 Commit되지 않은 사항은 Rollback되어야 하는데 이때 Undo Segment정보가 사용 됩니다.

- 강좌 URL : http://www.gurubee.net/lecture/1898

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입