by 구루비 IOT ORGANIZATION PCTTHRESHOLD INCLUDING OVERFLOW USER_SEGMENTS INDEX ORGANIZED TABLE [2005.03.23]
ORGANIZATION INDEX TABLESPACE : IOT Data가 저장되는 Tablespace
PCTTHRESHOLD : IOT를 위해서 예약된 공간의 백분율로, 1블럭의 N% 비율보다 큰 데이터가 입력되면 키 열이 아닌 데이터는 OVERFLOW TABLESPACE절에 정의된 테이블스페이스에 저장 됩니다.
- 0~50 사이값으로만 지정가능, 디폴트는 50
- 만약 PCTTHRESHOLD 40 으로 지정했을 경우, 하나의 행자체가 위에 값보다 크게 되면 INCLUDING컬 뒤에 있는 컬럼만 제외하고는 모두 OVERFLOW 세그먼트로 이동됩니다.
INCLUDING : IOT 행을 인덱스와 오버플로우 구역으로 나눌 열을 구분합니다.
- INCLUDING절이 지정되지 않았는데 행 크기가 PCTTHRESHOLD를 초과하면 기본 키 열을 제외한 모든 이 오버플로우 세그먼트에 저장이 됩니다.
- INCLUDING절 뒤에 있는 컬럼만 제외하고 모두 오버플로우 세그먼트에 저장이 됩니다.
- INCLUDING절에 오는 열은 기본 키의 마지막 열의 이름 이거나 기본 키가 아닌 열 입니다.
OVERFLOW TABLESPACE : PCTTHRESHOLD를 초과하는 Data 행이 저장됩니다. 만일 Overflow Tablespace Option을 주지 않고 생성된 IOT에 대하여 (PCTTHRESHOLD / 100) *DB_BLOCK_SIZE보다 큰 row가 발생한다면 ORA-1429와 같은 오류를 만나게 됩니다.
SQL> CREATE TABLE iot_test ( id NUMBER CONSTRAINT iot_test_pk_id PRIMARY KEY, name VARCHAR2(30), contents VARCHAR2(2000)) ORGANIZATION INDEX TABLESPACE indx PCTTHRESHOLD 40 INCLUDING name OVERFLOW TABLESPACE users;
위에서 설명한거와 같이 IOT를 생성할 때 기본적으로 인덱스 세그먼트와 OVERFLOW 세그먼트를 지정합니다.
인덱스 : PK 지정시 생성되는 인덱스로 CREATE TABLE 문에 지정된 테이블스페이스에 생성되며 이때 지정된 스토리지와 공간활용 파라미터를 가진다.
OVERFLOW 행조각을 수용할 테이블 : PCTTHRESHOLD를 초과한 경우 나머지 컬럼들이 저장되는 테이블로 이름이 SYS_IOT_OVER_n으로 지정되며 n은 DBS_OBJECTS에서 볼 수 있는 IOT의 OBJECT_ID입니다.
아래 그림과 같이 인덱스 세그먼트이름은 PK 이름이 되고, 세그먼트유형은 INDEX가 됩니다.
OverFlow 세그먼트는 세그먼트이름은 SYS_IOT_OVER_n로 지정되고, 세그먼트유형은 TABLE이 됩니다.
-- 위에서 생성한 IOT의 인덱스 세그먼트를 조회 예제 입니다. SQL> SELECT segment_name FROM USER_SEGMENTS WHERE segment_type='INDEX'; SEGMENT_NAME ---------------------- PK_DEPT PK_EMP IOT_TEST_PK_ID --> IOT의 Data가 저장되는 세그먼트 -- 위에서 생성한 IOT의 OverFlow 세그먼트 조회 예제 입니다. SQL> SELECT segment_name FROM USER_SEGMENTS WHERE segment_type='TABLE'; SEGMENT_NAME ------------------------------------------------------------------------ DEPT EMP SYS_IOT_OVER_30957 --> OVERFLOW에 해당하는 Data가 저장되는 세그먼트
- 강좌 URL : http://www.gurubee.net/lecture/1864
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.