Oracle Admin 강좌 (Oracle9i)
IOT 생성 6 1 10,979

by 김정식 IOT ORGANIZATION PCTTHRESHOLD INCLUDING OVERFLOW USER_SEGMENTS INDEX ORGANIZED TABLE [2005.03.23]


IOT(INDEX ORGANIZED TABLE) 생성

생성 문법

  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 생성시 만들어지는 세그먼트

  위에서 설명한거와 같이 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가 저장되는 세그먼트  
    

 

참고문헌

  • - Oracle Technical Bulletins No.11615 ORACLE 8.0의 IOT(INDEX ORGANIZED TABLE)
  • - Oracle 9i Performance Tuning Student Guide Volumn 1

참고링크

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

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

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

by 구태용 [2008.04.02 15:50:02]
ito 생성 예제에서여.
ORA-02253: 제약을 지정할 수 없습니다 이라고 나오는데요. ^^;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입