by 구루비 EXTENT UNIFORM SIZE MINEXTENTS LMT DMT AUTOALLOCATE [2006.04.11]
Extent는 Segment에 할당된 연속적인 블록으로 Database Storage 할당의 논리적인 단위 입니다.
각 Segment는 Data를 넣기 위해 적어도 하나 이상의 Extent가 생성되어야 합니다.
각각의 segment는 data를 저장하기 위해서 적어도 하나의 extent로 만들어 집니다. 이 extent를 segment의 initial extent라 부릅니다.
Object는 현재 할당된 모든 Extent가 이미 채워진 경우에만 새로운 Extent를 할당 합니다.
Extent는 언제 할당(allocation)되는가?
- Segment(Table,Index등)가 처음 생성 될 때 Initial Extent크기만한 Extent가 할당.
- Segment가 점차 커짐에 따라 Next Extent크기만한 Extent가 할당됨.
- Next Extent = Next * (1+Pctincrease/100)
전통적인 방법으로 STORAGE절을 사용하여 EXTENT를 할당 합니다.
Oracle 9i 버전이후 DICTIONARY MANAGED 방식의 사용을 권장하지 않음
SQL> CREATE TABLESPACE local_tbs DATAFILE 'C:\oracle\oradata\tbs\dic_tbs01.dbf' SIZE 50M DEFAULT STORAGE (INITIAL 1M NEXT 1M MINEXTENTS 2 MAXEXTENTS 50 PCTINCREASE 0);
- INITIAL : Segment가 생성될 때 할당될 때 첫 번째 확장영역의 크기 입니다.
- NEXT : 다음 Extents의 크기, 두 번째 확장영역은 NEXT의 원래 크기와 동일하며 다음부터의 NEXT는 (1+PCTINCREASE/100)과 Next의 이전크기를 곱한 크기로 설정 됩니다
- MINEXTENTS : 생성할 Extents의 최소 값
- MAXEXTENTS : 생성할 Extents의 최대 값
- PCTINCREASE : Extents의 증가율, Default값은 50 입니다
9i에서 SYSTEM TABLESPACE가 LOCALLY TABLESPACE일 경우, 일반 TABLESPACE생성시 DEFAULT STORAGE절(DICTIONARY 방식)은 사용되지 않습니다.
LOCALLY MANAGED TABLESPACES를 사용하면서, CREATE TABLE 절에 STORAGE를 준다면 모두 무시됩니다. 즉 TABLESPACE 에서 정한 UNIFORM SIZE 대로 EXTENT 할당을 합니다.
SQL> CREATE TABLESPACE local_tbs DATAFILE 'C:\oracle\oradata\tbs\local_tbs01.dbf' SIZE 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M;
AUTOALLOCATE
- 테이블스페이스에 대한 익스텐트 관리를 시스템에서 관장하도록 합니다.
- 사용자는 익스텐트의 크기를 수동으로 지정할 수 없습니다.
UNIFORM
- 테이블스페이스가 동일한 크기의 익스텐트로 구성되도록 지정합니다. 크기는 기본적으로 바이트 단위로 지정
- 익스텐트 크기를 KB 또는 MB 단위로 지정하기 위해서는 K 또는 M 을 사용하여 지정 합니다
- 이 옵션을 사용하게 되면, DEFAULT Storage 절을 사용할 수 없습니다.
만약 EXTENT MANAGEMENT LOCAL 절을 사용하면서 AUTOALLOCATE 또는 UNIFORM을 명시하지 않는다면 AUTOALLOCATE가 default로 이용 됩니다.
Segment를 drop또는 truncate 시킬 때 De-allocated 됩니다..
ALTER TABLE table_name DEALLOCATE UNUSED 명령을 사용하여 사용되지 않은 extent들을 de-allocate 할 수 있습니다.
잦은 De-Allocation은 Tablespace의 단편화(Fragmentation) 현상을 야기할 수 있습니다.
- 강좌 URL : http://www.gurubee.net/lecture/1897
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.