Skip to end of metadata
Go to start of metadata

 

 

 

 

개요


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

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

 

 

 

 

 

 

디스크 테이블 사용량 조회



ALTIBASE HDB 4.3.9 디스크 테이블 사용량 조회 쿼리
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
 ;
출력 예시

 

 

 

 

 

 

디스크 인덱스 사용량 조회



ALTIBASE HDB 4.3.9 디스크 인덱스 사용량 조회 쿼리
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
   ;
결과 예시

 

 

 

 

 

 

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



디스크 테이블 수 조회 쿼리
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 ;
디스크 인덱스 수 조회 쿼리
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);

 

 

  • No labels