세그먼트 생 성 표 usersegments

1. 세그먼트 의 정의 및 유형
Oracle 의 세그먼트 (segment) 는 디스크 공간 을 차지 하 는 대상 으로 가장 흔히 볼 수 있 는 세그먼트 유형 은 다음 과 같 습 니 다.
l  클 러 스 터
l  테이블
l  테이블 파 티 션
l  색인 인덱스
l  색인 파 티 션
l  Lob 파 티 션 lob 파 티 션, lob 서브 파 티 션 lobsubpartition, lob 색인 lobindex, lob 세그먼트 lob segmnent
l  내장 표 nestedtable
l  스크롤 백 세그먼트 롤 백
상세 한 소 개 를 통 해 알 수 있 듯 이 P313
2. 세그먼트 생 성
표, 색인 등 을 만 드 는 과정 에서 (11gR 2 에서 세그먼트 의 생 성 은 첫 번 째 데이터 가 삽 입 될 때 까지 기 다 려 야 합 니 다) 사실상 생 성 세그먼트 입 니 다. user segment 에서 생 성 된 세그먼트 를 볼 수 있 습 니 다.
(1) 기본 표를 만 들 고 분 배 된 세그먼트 보기
10.2.0.4:
SQL> create table t(id number);
 
Table created.
 
SQL> select * from user_segments;
 
SEGMENT_NAME                                                                     PARTITION_NAME                SEGMENT_TYPE       TABLESPACE_NAME                     BYTES     BLOCKS   EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE  FREELISTS FREELIST_GROUPS BUFFER_
T                                                                                                               TABLE              USERS                               65536          8         1          65536                       1  2147483645                                        DEFAULT

11gR2:
test@IRMSDC2> create table t(idnumber);
 
Table created.
 
test@IRMSDC2> select * from user_segments;
 
no rows selected
 
test@IRMSDC2> insert into t(id)values(1);
 
1 row created.
 
test@IRMSDC2> select * fromuser_segments;
 
SEGMENT_NAME                                                                     PARTITION_NAME                SEGMENT_TYPE       SEGMENT_SUTABLESPACE_NAME                         BYTES     BLOCKS   EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS   MAX_SIZE RETENTI MINRETENTION
--------------------------------------------------------------------------------------------------------------- ------------------ ---------------------------------------- ---------- ---------- ---------- ------------------------- ----------- ----------- ---------- ------- ------------
PCT_INCREASE  FREELISTS FREELIST_GROUPS BUFFER_ FLASH_CCELL_FL
------------ ---------- ---------------------- ------- -------
T                                                                                                               TABLE              ASSM       USERS                                   65536          8          1          65536     1048576           1 2147483645 2147483645
                                        DEFAULTDEFAULT DEFAULT

이 를 통 해 알 수 있 듯 이 11gR 2 에 서 는 데 이 터 를 삽입 한 후에 만 세그먼트 공간 을 할당 할 수 있 습 니 다. 아래 작업 은 모두 10g 에서 진행 되 며, 11g 에 데 이 터 를 삽입 하거나 표를 만 들 때 segment creation immediate 를 지정 하면 같은 효 과 를 얻 을 수 있 습 니 다.
(2) 홈 키 가 있 는 시 계 를 만 들 고 분 배 된 세그먼트 를 봅 니 다. 
SQL> create table t2(id numberprimary key);
 
Table created.
 
SQL> select * fromuser_segments;            
 
SEGMENT_NAME                                                                     PARTITION_NAME                SEGMENT_TYPE       TABLESPACE_NAME                     BYTES     BLOCKS   EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE  FREELISTS FREELIST_GROUPS BUFFER_
--------------------------------------------------------------------------------------------------------------- ------------------------------------------------ ---------- ---------- ---------- ------------------------- ----------- ----------- ------------ ---------- ----------------------
T                                                                                                               TABLE              USERS                               65536          8         1          65536                       1  2147483645                                        DEFAULT
T2                                                                                                              TABLE              USERS                               65536          8          1          65536                       1  2147483645                                        DEFAULT
SYS_C00326438                                                                                                   INDEX              USERS                               65536          8          1          65536                       1  2147483645                                        DEFAULT

(3) lob 필드 가 있 는 시 계 를 만 들 고 분 배 된 세그먼트 를 봅 니 다.
SQL> createtable t3(x int primary key, y clob, z blob);
 
Table created.
SQL> select segment_name,segment_type,tablespace_name,bytes,blocks,extents from user_segments;
SEGMENT_NAME                   SEGMENT_TYPE       TABLESPACE_NAME                     BYTES     BLOCKS   EXTENTS
------------------------------------------------ ------------------------------ ---------- --------------------
T                              TABLE              USERS                               65536          8          1
T2                             TABLE              USERS                               65536          8          1
SYS_C00326438                  INDEX              USERS                               65536          8          1
T3                             TABLE              USERS                               65536          8          1
SYS_LOB0000469684C00002$$      LOBSEGMENT         USERS                               65536          8         1
SYS_IL0000469684C00002$$       LOBINDEX           USERS                               65536          8          1
SYS_LOB0000469684C00003$$      LOBSEGMENT         USERS                               65536          8          1
SYS_IL0000469684C00003$$       LOBINDEX           USERS                               65536          8          1
SYS_C00326439                  INDEX              USERS                               65536          8          1
 
9 rowsselected.

이 를 통 해 알 수 있 듯 이 t 는 하나의 표 세그먼트 만 만 들 었 고 t2 는 하나의 표 세그먼트 와 하나의 색인 세그먼트 만 들 었 으 며 t3 는 하나의 표 세그먼트, 하나의 색인 세그먼트, 2 개의 lobindex, 2 개의 lobsegment 를 만 들 었 다.
결론: 표를 만 들 때 표 의 정보 와 데 이 터 는 여러 세그먼트 로 분 산 될 수 있 습 니 다. 각 세그먼트 에는 일부 정보 가 저장 되 어 있 고 세그먼트 는 구역 으로 구성 되 며 구역 은 Oacle 블록 으로 구성 되 며 Oacle 블록 은 운영 체제 로 구성 되 어 있 습 니 다.
새 구간 을 만 들 때 기본 값 은 1 개의 구역, 8 개의 블록 으로 구성 되 며 모두 8K * 8 공간 입 니 다. 기본 값 으로 Oacle 블록 크기 는 8k 입 니 다.
SQL> show parameter block_size;
 
NAME                                 TYPE                           VALUE
------------------------------------------------------------------ ------------------------------
db_block_size                        integer                        8192

(4) 대량의 데이터 삽입
표 t 에 대량의 데 이 터 를 삽입 하여 세그먼트 크기 의 변 화 를 관찰 합 니 다.
SQL> conn / as sysdba
Connected.
SQL> INSERT INTO test.t SELECT ROWNUMFROM dba_TABLES WHERE ROWNUM <= 10000;
 
10000 rows created.
 
SQL> conn test/test_123;
Connected.
SQL> selectsegment_name, segment_type,tablespace_name,bytes,blocks,extents fromuser_segments;
 
SEGMENT_NAME                   SEGMENT_TYPE       TABLESPACE_NAME                     BYTES     BLOCKS   EXTENTS
------------------------------------------------ ------------------------------ ---------- --------------------
T                              TABLE              USERS                              196608         24          3
T2                             TABLE              USERS                               65536          8          1
SYS_C00326438                  INDEX              USERS                               65536          8          1
T3                             TABLE              USERS                               65536          8         1
SYS_LOB0000469684C00002$$      LOBSEGMENT         USERS                               65536          8          1
SYS_IL0000469684C00002$$       LOBINDEX           USERS                               65536          8          1
SYS_LOB0000469684C00003$$      LOBSEGMENT         USERS                               65536          8          1
SYS_IL0000469684C00003$$       LOBINDEX           USERS                               65536          8          1
SYS_C00326439                  INDEX              USERS                               65536          8          1
 
9 rows selected.

이 를 통 해 알 수 있 듯 이 구역 은 3 개 로 늘 었 고 block 은 24 개 로 늘 었 다. 즉, 구간 점용 공간 은 24 * 8K 이다.

좋은 웹페이지 즐겨찾기