2008년 02월 06일
[펌] SEGMENTS 란?
[펌] dba_extents
From : http://radiocom.kunsan.ac.kr/lecture/oracle/what_is/segments.html
SEGMENTS 란?

SEGMENTS에 대한 정보 조회

From : http://radiocom.kunsan.ac.kr/lecture/oracle/what_is/segments.html
SEGMENTS 란?
SEGMENT는 생성 될 때 적어도 하나의 EXTENT를 가진다.
DATA SEGMENT는 하나의 TABLESPACE에 속한 여러 file에 걸쳐 있을 수 있다
TABLESPACE 안에는 여러 개의 data SEGMENT와 INDEX SEGMENT, UNDO SEGMENT,TEMPORARY SEGMENT가 존재한다.
즉 SEGMENT는 여러 가지 data를 저장하기 위한 논리적인 구조이며, SEGMENT는
생성되면서 자신이 사용할 공간으로 EXTENT를 할당 받는다.
SEGMENT의 종류TABLE SEGMENT TABLE PARTITION SEGMENT CLUSTER SEGMENT INDEX SEGMENT INDEX-ORGANIZED TABLE SEGMENT INDEX PARTITION SEGMENT UNDO SEGMENT TEMPORARY SEGMENT LOB SEGMENT LOB INDEX SEGMENT NESTED TABLE SEGMENT Bootstrap SEGMENT
SQL> select count(*) segment_name from dba_extents;
SEGMENT_NAME
------------
6248
SQL> select segment_name, blocks from dba_extents
2 where segment_name='BOOTSTRAP$';
SEGMENT_NAME BLOCKS
----------------------------- --------------
BOOTSTRAP$ 8
SQL>
TABLE SEGMENT
-- 단일 테이블의 row를 저장한다
-- 데이터베이스에서 일반적인 데이터 저장방법이다.
-- 관리자가 row data의 저장 위치를 조절할 수 없다.
-- 한 tablespace 내에 저장된다.
TABLE PARTITION SEGMENT
-- 대용량 데이터인 경우 너무 커서 관리하기 어렵기 때문에 여러 조각으로 나누어서 관리할 때 사용된다.
-- 단일 table의 row를 여러 PARTITION에 나누어 저장한다.
-- key 값의 범위 내에서 PARTITION을 나눌 수 있다.
-- 각각의 PARTITION은 서로 다른 TABLESPACE에 위치할 수 있다.
-- 단일 TABLE이라도 PARTITION 별로 각각의 storage parameter를 지정할 수 있다.
CLUSTER SEGMENT
-- 저장 방식이 TABLE과 다르며, 관련된 데이터 끼리 모아서 저장하는 방식의 SEGMENT이다.
-- 다중 TABLE을 포함하는 저장 구조이다.
-- 보통은 하나의 TABLE을 포함한다.
-- data의 key 값에 따라 저장 위치가 달라진다.
-- 주로 검색과 수정이 자주 발생하는 테이블에 사용된다.
-- JOIN 조건이 자주 발생하는 테이블을 모아서 CLUSTER SEGMENT를 구선하면 좋다.
INDEX SEGMENT
-- data 검색 기능을 향상 시키기 위해 table의 하나 이상의 column에 생성된 INDEX를 포함한다.
-- 데이터와 인덱스는 서로 다른 segment에 저장된다.
-- 각 row는 유일한 rowid를 가지고 있는데, INDEX SEGMENT는 rowid의 정보를 가지고 해당 row에 직접 접근이 가능하다.
INDEX-ORGANIZED TABLE SEGMENT
-- key 값에 기초하여 INDEX 내에 데이터를 저장한다.
-- IOT SEGMENT라고도 불린다.
-- 테이블의 데이터가 INDEX tree내에서 존재하기 때문에 데이터를 직접 읽어 올 수 있다.
INDEX PARTITION SEGMENT
-- TABLE과 같이 INDEX 또한 PARTITION으로 나누어 사용할 수 있다.
-- 분할된 INDEX는 I/O를 분산시키며, 성능향상이 된다.
UNDO SEGMENT
-- 데이터가 변경되었을 때 변경전 image를 저장하기 위한 object로 DATABASE에 변경을 가하는 transaction에 의해 사용된다.
-- 데이터나 인덱스등의 BLOCK이 변경되기 전의 값을 undo segment에 저장한다.
-- undo segment에 저장된 값을 사용하여 실행을 취소할 수 있다.
-- READ-consistent(읽기 일관성), recovery, ROLLBACK을 위하여 사용된다.
-- DBA_ROLLBACK_SEGS뷰로 정보를 알 수 있음
-- undo segment는 manual,auto 두 방식으로 있으며, auto를 권장한다.
SQL> show parameter undo_management;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
SQL>
TEMPORARY SEGMENT
-- JOIN, GROUP BY, ORDER BY, INDEX 생성등과 같은 작업을 할 때 발생하는 sorting 연산을 수행하기 위하여 사용된다.
-- 오라클은 먼저 memory를 사용하고, memory 공간이 부족한 경우에 TEMPORARY SEGMENT를 사용하여 작업을 수행한다.
-- 영구적인 TABLESPACE에 생성이 가능하지만, 별도로 TEMPORARY TABLESPACE를 만들어 사용한다.
LOB SEGMENT
-- TABLE에 하나 이상의 컬럼이 LOB column을 사용할 때 사용된다.
-- LOB는 텍스트 문서, image, 또는 Video file과 같은 큰 object를 의미한다.
-- TABLE은 이러한 LOB column이 매우 크게 되면, 별도의 SEGMENT에 저장한다.
-- TABLE에 단지 이러한 LOB 데이터의 위치에 대한 값만 가지고 있게 된다.
-- LOB Type은 최대 4GB까지 저장할 수 있다.
LOB INDEX SEGMENT
-- LOB SEGMENT가 생성될 때 암시적으로 생성된다.
-- 특정 LOB Column을 참조할 때 LOB INDEX SEGMENT를 사용하면 검색이 향상된다.
NESTED TABLE SEGMENT
-- 다른 하나의 TABLE을 포함하는 Column을 갖는 TABLE을 Nested TABLE이라 한다.
-- 이러한 nested TABLE은 별도의 SEGMENT에 저장된다.
Bootstrap SEGMENT
-- INSTANCE가 DATABASE를 OPEN 시, Dictionary Cache 초기화를 하는데 사용한다.
-- 이러한 SEGMENT는 관리자의 관리가 필요 없으며, 질의나 갱신이 불가능하다.
-- DATABASE 생성시 sql.bsq에 의해 생성된다.
-- Cache SEGMENT라고도 한다.
SEGMENTS에 대한 정보 조회
| user_segments | 세그먼트를 구성하는 설정에 대한 정보 |
| dba_segments | 세그먼트를 구성하는 설정에 대한 정보 |
| user_tablespaces | storage에 대한 정보 |
| dba_tablespaces | storage에 대한 정보 |
| user_free_space | 남은 공간에 대한 정보 |
| dba_free_space | 남은 공간 에 대한 정보 |
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
- tablespace sql문 by ides
- {아이티윌/오라클/OCP} 데이터베이스 구조와 스페이스 관리 by laputa
- [Oracle] 테이블 만들기 Create Table by 지원
- {아이티윌/오라클/OCP} 데이터 사전의 사용 by laputa
- 테이블 생성,복사,삭제,보기 간단 sql문 by ides
# by | 2008/02/06 12:41 | Oracle | 트랙백(1)




제목 : [펌] row migration/chaining
[펌] SEGMENTS 란? From : http://radiocom.kunsan.ac.kr/lecture/oracle/what_is/what_is_table.html row migration/chaining테이블에 대해 잦은 insert와 update가 발생하면 row migration이라고 하는 행 이전이 발생하거나 row chaining이 발생한다. 만약 기존의 블럭에 저장된 6개 크기의 데이터가 보다 큰 공간을 필요로 하는 ......more