Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • DELETE 로 테이블의 데이터를 삭제하더라도 USED 는 줄어들지 않습니다.
  • DELETE 후 FREE PAGE 를 제외한 실제 USED 를 확인하려면 ALTER TABLE table_name AGING ; 을 수행해야 합니다.
  • ALTER TABLE ~ AGING ; 수행 중에는 테이블에 X락을 잡기 때문에 해당 테이블에 대한 다른 요청은 대기 상태가 되므로 수행 시 주의 해야 합니다.

    No Format
    titleALTIBASE HDB 5.3.x, 5.5.1, 6.1.1, 6.3.1 디스크 테이블 사용량 조회 쿼리
    languagesql
    SELECT U.USER_NAME USER_NAME                                                                                            -- 데이터베이스 사용자
         , TBL.TABLE_NAME TABLE_NAME                                                                                        -- 테이블 이름
         , DECODE(TBL.IS_PARTITIONED, 'T', TBL.PARTITION_NAME, 'F', '-') PARTITIONED_TABLE                                  -- 파티션드 테이블 이름
         , TBS.NAME TABLESPACE_NAME                                                                                         -- 테이블스페이스
         , TO_CHAR((D.MAX * TBS.PAGE_SIZE)/1024, '999,999,999,999') 'MAX(KB)'                                               -- 테이블이 속한 테이블스페이스의 최대 크기
         , TO_CHAR((TBS.EXTENT_PAGE_COUNT * TBS.PAGE_SIZE * SEG.TOTAL_EXTENT_COUNT)/1024, '999,999,999,999') 'ALLOC(KB)'    -- 현재까지 할당 받은 크기
         , TO_CHAR(SEG.TOTAL_USED_SIZE/1024, '999,999,999,999') 'USED(KB)'                                                  -- 할당받은 공간 중 데이터가 포함된 크기
      FROM (SELECT TBL.USER_ID
                 , DECODE(TBL.IS_PARTITIONED, 'F', TBL.TABLE_OID, 'T', PT.PARTITION_OID) TABLE_OID
                 , TBL.TABLE_NAME
                 , PT.PARTITION_NAME
                 , DECODE(TBL.IS_PARTITIONED, 'F', TBL.TBS_ID, 'T', PT.TBS_ID) TBS_ID
                 , TBL.IS_PARTITIONED
              FROM SYSTEM_.SYS_TABLES_ TBL LEFT OUTER JOIN SYSTEM_.SYS_TABLE_PARTITIONS_ PT ON TBL.TABLE_ID = PT.TABLE_ID
             WHERE TBL.TABLE_TYPE = 'T'
           ) TBL
         , (SELECT S.TABLE_OID, SUM(S.TOTAL_EXTENT_COUNT) TOTAL_EXTENT_COUNT, SUM(S.TOTAL_USED_SIZE) TOTAL_USED_SIZE 
              FROM X$SEGMENT S 
             WHERE S.SEGMENT_TYPE IN (6, 7) /* 6 : 테이블, 7 : LOB 데이터(6.1.1 이상), 5 : 인덱스 */
             GROUP BY S.TABLE_OID) SEG
         , SYSTEM_.SYS_USERS_ U
         , V$TABLESPACES TBS
         , (SELECT SPACEID
                 , SUM(DECODE(MAXSIZE, 0, CURRSIZE, MAXSIZE)) AS MAX
                 , DECODE(MAX(AUTOEXTEND),1,'ON','OFF') 'AUTOEXTEND'
              FROM V$DATAFILES
             GROUP BY SPACEID) D
     WHERE 1=1
       AND SEG.TABLE_OID = TBL.TABLE_OID
       AND U.USER_ID = TBL.USER_ID
       AND D.SPACEID = TBL.TBS_ID
       AND TBS.ID = TBL.TBS_ID
     ORDER BY USER_NAME, TABLE_NAME, PARTITIONED_TABLE
    ;
    Code Block
    title결과 예시
    languagesql
    USER_NAME             TABLE_NAME            PARTITIONED_TABLE     TABLESPACE_NAME       MAX(KB)          ALLOC(KB)        USED(KB)          
    -------------------------------------------------------------------------------------------------------------------------------------------------------
    SYS                   DISK_T                -                     USER_DATA                2,097,152          316,160              316,032  
    SYS                   DISK_T2               -                     USER_DATA                2,097,152              256                    8  
    SYS                   EMP                   -                     SYS_TBS_DISK_DATA        2,097,152              256                   16  
    SYS                   PART_T1               P1                    PART_DATA                1,048,576              768                  520  
    SYS                   PART_T1               P2                    PART_DATA                1,048,576              768                  520  
    SYS                   PART_T1               P3                    PART_DATA                1,048,576          126,464              126,384  
    SYS                   PART_T2               P201406               PART_DATA                1,048,576           11,520               11,280  
    SYS                   PART_T2               P201407               PART_DATA                1,048,576           22,784               22,544  
    SYS                   PART_T2               P201408               PART_DATA                1,048,576            5,888                5,648  
    SYS                   PART_T2               P201512               PART_DATA                1,048,576            8,704                8,464  
    SYS                   PART_T2               PMAX                  PART_DATA_DEF            1,048,576            9,728                9,592  
    SYS                   RANGE2                DEF                   SYS_TBS_DISK_DATA        2,097,152              256                    8  
    SYS                   RANGE2                Q1_2014               SYS_TBS_DISK_DATA        2,097,152          112,896              112,688  
    SYS                   RANGE2                Q2_2014               SYS_TBS_DISK_DATA        2,097,152           56,576               56,352  
    SYS                   RANGE2                Q3_2014               SYS_TBS_DISK_DATA        2,097,152            1,792                1,704  
    SYS                   RANGE2                Q4_2014               SYS_TBS_DISK_DATA        2,097,152              768                  576  
    SYS                   RANGE_SALES           DEF                   SYS_TBS_DISK_DATA        2,097,152              256                    8  
    SYS                   RANGE_SALES           Q1_2014               SYS_TBS_DISK_DATA        2,097,152            5,888                5,648  
    SYS                   RANGE_SALES           Q2_2014               SYS_TBS_DISK_DATA        2,097,152           11,520               11,280  
    SYS                   RANGE_SALES           Q3_2014               SYS_TBS_DISK_DATA        2,097,152            8,704                8,464  
    SYS                   RANGE_SALES           Q4_2014               SYS_TBS_DISK_DATA        2,097,152            4,096                3,952  
    21 rows selected.

 

 

 

 

 

디스크 인덱스

...

  • DELETE 로 테이블의 데이터를 삭제하더라도 인덱스의 USED 는 줄어들지 않습니다.
  • DELETE 후 FREE PAGE 를 제외한 실제 USED 를 확인하려면 ALTER INDEX index_name AGING ; 을 수행해야 합니다.
  • ALTER INDEX ~ AGING 작업이 수행 중에는 테이블에 X락을 잡기 때문에 해당 테이블에 대한 다른 요청은 대기 상태가 되므로 수행 시 주의해야 합니다.

    No Format
    titleALTIBASE HDB 5.3.x, 5.5.1, 6.1.1, 6.3.1 디스크 인덱스 사용량 조회 쿼리
    languagesql
    -- 디스크 인덱스 사용량 컬럼 설명 
    -- USER_NAME	: 데이터베이스 사용자    
    -- TABLE_NAME	: 테이블 이름
    -- PARTITIONED_NAME	: 파티션드 테이블 이름, 논-파티션드 테이블이면 NON-PARTITIONED
    -- INDEX_NAME	: 인덱스 이름
    -- PARTITIONED_INDEX	: 파티션드 인덱스 이름
    -- TBS_NAME	: 인덱스가 속한 테이블스페이스  
    -- MAX(KB)	: 테이블스페이스의 최대 크기
    -- ALLOC(KB)	: 할당 받은 전체 크기
    -- USED(KB)	: 할당 받은 공간 중 데이터가 포함된 크기
    -- USAGE(%)	: 테이블스페이스 최대 크기 대비 사용률
    set linesize 1024
    set colsize 20
    SELECT U.USER_NAME USER_NAME                                                                                         
         , I_LIST.TABLE_NAME                                                                                             
         , DECODE(I_LIST.PARTITION_NAME, NULL, 'NON-PARTITIONED', I_LIST.PARTITION_NAME) PARTITIONED_NAME                
         , I_LIST.INDEX_NAME INDEX_NAME                                                                                  
         , DECODE(I_LIST.INDEX_PARTITION_NAME, NULL, 'NON-PARTITIONED', I_LIST.INDEX_PARTITION_NAME) PARTITIONED_INDEX   
         , TBS.NAME TBS_NAME                                                                                             
         , TO_CHAR((D.MAX * TBS.PAGE_SIZE)/1024, '999,999,999') 'MAX(KB)'                                                
         , TO_CHAR((TBS.EXTENT_PAGE_COUNT * TBS.PAGE_SIZE * SEG.TOTAL_EXTENT_COUNT)/1024, '999,999,999') 'ALLOC(KB)'     
         , TO_CHAR(SEG.TOTAL_USED_SIZE/1024, '999,999,999,999') 'USED(KB)'                                               
         , TO_CHAR(((SEG.TOTAL_USED_SIZE/(D.MAX*TBS.PAGE_SIZE))*100), '99.99') 'USAGE(%)'                                
      FROM (SELECT T.TABLE_NAME
                 , PT.PARTITION_NAME
                 , I.INDEX_NAME
                 , PI.INDEX_PARTITION_NAME
                 , DECODE(T.IS_PARTITIONED, 'F', I.TABLE_ID, 'T', PT.TABLE_ID) TABLE_ID
                 , DECODE(T.IS_PARTITIONED, 'F', T.TABLE_OID, 'T', PT.PARTITION_OID) TABLE_OID
                 , DECODE(I.IS_PARTITIONED, 'F', I.TBS_ID, 'T', PI.TBS_ID) TBS_ID
                 , I.INDEX_ID
                 , T.USER_ID
              FROM SYSTEM_.SYS_INDICES_ I LEFT OUTER JOIN SYSTEM_.SYS_INDEX_PARTITIONS_ PI ON PI.INDEX_ID = I.INDEX_ID 
                                          LEFT OUTER JOIN SYSTEM_.SYS_TABLE_PARTITIONS_ PT ON PT.PARTITION_ID = PI.TABLE_PARTITION_ID 
                                          LEFT OUTER JOIN SYSTEM_.SYS_TABLES_ T ON T.TABLE_ID = I.TABLE_ID AND T.TABLE_TYPE = 'T') I_LIST
         , X$SEGMENT SEG
         , V$INDEX I
         , V$TABLESPACES TBS
         , SYSTEM_.SYS_USERS_ U
         , (SELECT SPACEID
                 , SUM(DECODE(MAXSIZE, 0, CURRSIZE, MAXSIZE)) AS MAX
                 , DECODE(MAX(AUTOEXTEND),1,'ON','OFF') 'AUTOEXTEND'
              FROM V$DATAFILES
             GROUP BY SPACEID) D
     WHERE 1=1
       AND SEG.TABLE_OID = I.TABLE_OID
       AND SEG.SEGMENT_PID = I.INDEX_SEG_PID
       AND SEG.SPACE_ID = I_LIST.TBS_ID
       AND I_LIST.INDEX_ID = I.INDEX_ID
       AND I_LIST.TABLE_OID = I.TABLE_OID
       AND I_LIST.TBS_ID = TBS.ID
       AND D.SPACEID = I_LIST.TBS_ID
       AND U.USER_ID = I_LIST.USER_ID
     ORDER BY I_LIST.TABLE_NAME, I_LIST.INDEX_NAME, I_LIST.PARTITION_NAME, I_LIST.INDEX_PARTITION_NAME
    ;
    Code Block
    title결과 예시
    languagesql
    USER_NAME             TABLE_NAME            PARTITIONED_NAME      INDEX_NAME            PARTITIONED_INDEX     TBS_NAME              MAX(KB)          ALLOC(KB)        USED(KB)            USAGE(%)
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    SYS                   DISK_T                NON-PARTITIONED       DISK_T_IDX_01         NON-PARTITIONED       USER_IDX                 2,097,152           47,104               46,984      2.24
    SYS                   DISK_T2               NON-PARTITIONED       DISK_T2_IDX_01        NON-PARTITIONED       USER_IDX                 2,097,152              256                   16      0.00
    SYS                   EMP                   NON-PARTITIONED       EMP_IDX_01            NON-PARTITIONED       SYS_TBS_DISK_DATA        2,097,152              256                   32      0.00
    SYS                   PART_T1               P1                    PART_T1_IDX           P_IDX1                PART_IDX                 3,145,728              256                  216       .01
    SYS                   PART_T1               P2                    PART_T1_IDX           P_IDX2                PART_IDX                 3,145,728              256                  216       .01
    SYS                   PART_T1               P3                    PART_T1_IDX           P_IDX3                PART_IDX                 3,145,728           46,848               46,608      1.48
    SYS                   PART_T2               P201406               PART_T2_IDX_01        P201406               PART_IDX                 3,145,728            3,840                3,808       .12
    SYS                   PART_T2               P201407               PART_T2_IDX_01        P201407               PART_IDX                 3,145,728            7,680                7,528       .24
    SYS                   PART_T2               P201408               PART_T2_IDX_01        P201408               PART_IDX                 3,145,728            2,048                1,936       .06
    SYS                   PART_T2               P201512               PART_T2_IDX_01        P201512               PART_IDX                 3,145,728            3,072                2,856       .09
    SYS                   PART_T2               PMAX                  PART_T2_IDX_01        PMAX                  PART_IDX                 3,145,728            3,328                3,232       .10
    SYS                   PART_T2               P201406               PART_T2_IDX_02        P201406               PART_IDX                 3,145,728            3,840                3,808       .12
    SYS                   PART_T2               P201407               PART_T2_IDX_02        P201407               SYS_TBS_DISK_DATA        2,097,152            7,680                7,528       .36
    SYS                   PART_T2               P201408               PART_T2_IDX_02        P201408               SYS_TBS_DISK_DATA        2,097,152            2,304                1,936       .09
    SYS                   PART_T2               P201512               PART_T2_IDX_02        P201512               SYS_TBS_DISK_DATA        2,097,152            3,328                2,856       .14
    SYS                   PART_T2               PMAX                  PART_T2_IDX_02        PMAX                  SYS_TBS_DISK_DATA        2,097,152            3,584                3,232       .15
    16 rows selected.

 

 

 

 

 

 

 

참고 - 디스크 테이블 및 인덱스 수 확인 방법

...