Versions Compared

Key

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

Table of Contents

 

 

 

 

개요

...

ALTIBASE HDB 4.3.9 버전의 디스크 테이블 및 인덱스 사용량 조회 쿼리입니다.

이 쿼리는 ALTIBASE HDB 5.1.1 에서도 사용할 수 있습니다.

 

...

 

...

 

...

IE 에서 SQL 문장을 복사하면 빈 줄이 생길 수 있으니 필요 시 첨부 파일을 사용하시기 바랍니다. ALTIBASE_HDB_4.3.9_disk_table_index_usage.txt

 

 

 

디스크 테이블 사용량 조회

...


Code Blocknoformat
titleALTIBASE HDB 4.3.9 디스크 테이블 사용량 조회 쿼리
languagesql
set linesize 1024;
set colsize 20;
SELECT U.USER_NAME 'USER_NAME'                                                                                      -- 데이터베이스 사용자
     , TBL.TABLE_NAME 'TABLE_NAME'                                                                                  -- 테이블 이름
     , TBS.NAME 'TBS_NAME'                                                                                          -- 테이블이 속한 테이블스페이스 이름
     , TO_CHAR((TBS.TOTAL_PAGE_COUNT * TBS.PAGE_SIZE)/1024 , '999,999,999') 'TBS_MAX(KB)'                           -- 테이블스페이스의 최대 크기
     , TO_CHAR((TBS.A_EXTENT_PAGE_COUNT * TBS.PAGE_SIZE * SEG.EXTENT_TOTAL_COUNT)/1024, '999,999,999') 'ALLOC(KB)'  -- 테이블에서 할당받은 전체 크기
     , TO_CHAR((TBS.A_EXTENT_PAGE_COUNT * TBS.PAGE_SIZE * SEG.EXTENT_FULL_COUNT)/1024, '999,999,999') 'USED(KB)'    -- 테이블의 실 사용량(데이터 사용량)
     , TO_CHAR((((TBS.A_EXTENT_PAGE_COUNT * TBS.PAGE_SIZE * SEG.EXTENT_TOTAL_COUNT)/(TBS.TOTAL_PAGE_COUNT * TBS.PAGE_SIZE))*100), '99.9') 'USAGE(%)' -- 테이블스페이스 최대 크기를 기준으로 한 사용률
  FROM X$SEGMENT SEG
     , SYSTEM_.SYS_TABLES_ TBL
     , V$TABLESPACES TBS
     , SYSTEM_.SYS_USERS_ U
 WHERE SEG.TABLE_OID = TBL.TABLE_OID
   AND SEG.SPACE_ID = TBL.TBS_ID
   AND SEG.SPACE_ID = TBS.ID
   AND TBL.USER_ID = U.USER_ID
   AND TBL.TABLE_TYPE = 'T'
   AND SEG.SEGMENT_TYPE = 6
 ORDER BY USER_NAME, TABLE_NAME
 ;
Code Block
title출력 예시
languagesql
USER_NAME             TABLE_NAME            TBS_NAME              TBS_MAX(KB)      ALLOC(KB)        USED(KB)         USAGE(%)
----------------------------------------------------------------------------------------------------------------------------------------------
SYS                   CUSTOMER              USER_DATA                2,097,152              256                0       0.0
SYS                   DEPARTMENT            SYS_TBS_DATA               254,976              256                0        .1
SYS                   DISK_T                USER_DATA                2,097,152          851,200          850,944      40.6
SYS                   EMPLOYEE              SYS_TBS_DATA               254,976              256                0        .1
SYS                   ORDERS                USER_DATA                2,097,152              256                0       0.0
5 rows selected.

 

 

 

 

 

 

디스크 인덱스 사용량 조회

...


Code Blocknoformat
titleALTIBASE HDB 4.3.9 디스크 인덱스 사용량 조회 쿼리
languagesql
set linesize 1024
set colsize 20
SELECT U.USER_NAME AS 'USER_NAME'           -- 데이터베이스 사용자
     , TBL.TABLE_NAME AS 'TABLE_NAME'       -- 테이블 이름
     , IDX.INDEX_NAME AS 'INDEX_NAME'       -- 인덱스 이름
     , TBS.NAME AS 'TBS_NAME'               -- 인덱스가 속한 테이블스페이스 이름
     , TO_CHAR((TBS.TOTAL_PAGE_COUNT * TBS.PAGE_SIZE)/1024 , '999,999,999') AS 'TBS_MAX(KB)'                            -- 테이블스페이스의 최대 크기
     , TO_CHAR((TBS.A_EXTENT_PAGE_COUNT * TBS.PAGE_SIZE * SEG.EXTENT_TOTAL_COUNT)/1024, '999,999,999') AS 'ALLOC(KB)'   -- 인덱스에서 할당받은 전체 크기
     , TO_CHAR((TBS.A_EXTENT_PAGE_COUNT * TBS.PAGE_SIZE * SEG.EXTENT_FULL_COUNT )/1024, '999,999,999') AS 'USED(KB)'    -- 인덱스의 실 사용량(데이터 사용량)
    , TO_CHAR((((TBS.A_EXTENT_PAGE_COUNT * SEG.EXTENT_TOTAL_COUNT)/TBS.TOTAL_PAGE_COUNT)*100), '99.9') AS 'USAGE(%)'    -- 테이블스페이스의 최대 크기를 기준으로 한 사용률
 FROM  X$SEGMENT SEG
     , V$INDEX I
     , SYSTEM_.SYS_INDICES_ IDX
     , SYSTEM_.SYS_TABLES_ TBL
     , V$TABLESPACES TBS
     , SYSTEM_.SYS_USERS_ U
 WHERE SEG.TABLE_OID = I.TABLE_OID
   AND SEG.SEGMENT_DESC = I.INDEX_SEG_DESC
   AND I.INDEX_ID = IDX.INDEX_ID
   AND IDX.TABLE_ID = TBL.TABLE_ID
   AND SEG.SPACE_ID = IDX.TBS_ID
   AND SEG.SPACE_ID = TBS.ID
   AND IDX.USER_ID = U.USER_ID
   AND TBL.TABLE_TYPE = 'T'
   AND SEG.SEGMENT_TYPE = 5
 ORDER BY U.USER_NAME, TBL.TABLE_NAME, IDX.INDEX_NAME
   ;
Code Block
title결과 예시
languagesql
USER_NAME             TABLE_NAME            INDEX_NAME            TBS_NAME              TBS_MAX(KB)      ALLOC(KB)        USED(KB)         USAGE(%)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
SYS                   CUSTOMER              __SYS_IDX_ID_136      USER_DATA                2,097,152              256                0       0.0
SYS                   DEPARTMENT            DEP_IDX1              USER_IDX                 2,097,152              256                0       0.0
SYS                   DEPARTMENT            __SYS_IDX_ID_134      SYS_TBS_DATA               254,976              256                0        .1
SYS                   DISK_T                DISK_T_IDX_01         USER_IDX                 2,097,152          159,744          159,488       7.6
SYS                   EMPLOYEE              EMP_IDX1              USER_IDX                 2,097,152              256                0       0.0
SYS                   EMPLOYEE              __SYS_IDX_ID_135      SYS_TBS_DATA               254,976              256                0        .1
SYS                   ORDERS                ODR_IDX1              USER_IDX                 2,097,152              256                0       0.0
SYS                   ORDERS                __SYS_IDX_ID_137      USER_DATA                2,097,152              256                0       0.0
8 rows selected.

 

 

 

 

 

 

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

...


Code Blocknoformat
title디스크 테이블 수 조회 쿼리
languagesql
set linesize 1024
set colsize 30
SELECT 'TABLE CNT : '||COUNT(*) TABLE_COUNT
  FROM V$DISKTBL_INFO D
     , SYSTEM_.SYS_TABLES_ T
 WHERE D.TABLE_OID = T.TABLE_OID ;
Code Blocknoformat
title디스크 인덱스 수 조회 쿼리
languagesql
set linesize 1024;
set colsize 30;
SELECT 'INDEX CNT : '||COUNT(*) INDEX_COUNT
  FROM SYSTEM_.SYS_INDICES_
 WHERE TABLE_ID IN (SELECT TABLE_ID
                      FROM SYSTEM_.SYS_TABLES_ T
                         , V$DISKTBL_INFO D
                     WHERE T.TABLE_OID = D.TABLE_OID);

...