테이블 EXTENTS 현황을 확인할려고 하는데 의아한 점이 있어 도움 부탁드립니다. 0 1 2,044

by sspkos [2014.02.28 15:25:25]


도움 부탁 드립니다.

아래 스크립트 조건으로 테이블을 생성하였습니다.
CREATE TABLE CNSONE.GLP02H
(            PO_NO                                              VARCHAR2(20)    NOT NULL ,    
            PO_REV_NO                                          VARCHAR2(2)     NOT NULL ,    
            PO_STUS_CODE                                       VARCHAR2(1)     NOT NULL ,    
            UNIT_PR_CODE                                       VARCHAR2(1)     NOT NULL ,    
            ACPT_PLN_VNDR_CODE                                 VARCHAR2(10)    ,             
CONSTRAINT PK_GLP02H
            PRIMARY KEY(PO_NO,PO_REV_NO)
            USING INDEX TABLESPACE TS_CNSONE9_IDX
            PCTFREE 1
            STORAGE(INITIAL 1M NEXT 1M PCTINCREASE 0))
            PCTFREE 5
            PCTUSED 40
            TABLESPACE TS_CNSONE9_TAB
            STORAGE(INITIAL 1M NEXT 1M PCTINCREASE 0);
           
위의 STORAGE(INITIAL 1M NEXT 1M PCTINCREASE 0); 옵션으로 아래 쿼리를 실행해보니
EXTENTS가 16이 되었습니다.
이 부분에 대한 설명을 좀 부탁 드립니다.
그리고 실제 데이타가 많아져서 1M가를 넘어갈때 실제 EXTENTS 횟수를 구할려고 합니다.
짧은 생각에 당연히 아래 EXTENTS가 실제 확장횟수 인줄알고 있었는데 ^^;

---실행쿼리---
SELECT A.OWNER,
       A.SEGMENT_NAME,
       B.TABLESPACE_NAME,
       A.SEGMENT_TYPE,
       B.LOGGING,
       SUM(A.BYTES)/1024/1024 "MEGA_BYTE",
       SUM(A.EXTENTS) EXTENTS
  FROM DBA_SEGMENTS A, DBA_TABLES B
 WHERE A.SEGMENT_NAME = B.TABLE_NAME
   AND A.SEGMENT_TYPE IN ('TABLE','TABLE PARTITION')
   AND B.TABLESPACE_NAME NOT IN ('SYS','SYSTEM','SYSAUX','EXAMPLE')
   AND B.TABLE_NAME = 'GLP02H'
   AND B.OWNER      = 'CNSONE'
  GROUP BY  A.OWNER,
       A.SEGMENT_NAME,
       B.TABLESPACE_NAME,
       A.SEGMENT_TYPE,
       B.LOGGING
 
      
OWNER   SEGMENT_NAME      TABLESPACE_NAME      SEGMENT_TYPE   LOGGING   MEGA_BYTE    EXTENTS
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CNSONE     GLP02H                  TS_CNSONE9_TAB          TABLE                      YES          1                      16

by 비니 [2014.03.03 16:22:00]

음 잘 설명이 될지 모르지만 아는 거에 대해서만 설명 드리겠습니다.

뭐 일단 궁금한 점은 테이블을 왜 저렇게 만들려고 하시는지가.. 의문이긴 합니다.

보통 오라클 9i 이상부터? 인가 ... 테이블 스페이스 관리를 오라클에서 LMT방식으로 알아서 관리하도록 되어있습니다. 그래서 보통 테이블 생성시 extent에 관한 부분은  보통 건들지 않는걸로 아는데 .

아마 데이터 공간 관리상 따로 하시는가 보네요.

INITIAL 1M NEXT 1M PCTINCREASE 0) 이부분만 해석하자면

초기 1M 로 , 확장 1M로 .. 그다음부터 확장에 대한 부분은  인가 그럴겁니다.

일단 1M 이라고 한 부분이 아마 비정상적인거 같긴한데

보통 byte로 표시되는걸로 알고 있습니다..

1이라고 해서 아마 기본 extent 크기가 설정된듯 하네요.

user_segments 의
NEXT_EXTENT를 보시면 해당 테이블에서 다음 할당되는 extent 크기를 확인 할 수 있습니다.


댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입