개요
- ALTIBASE HDB 5.3.3 버전부터는 X$SEGMENT의 TOTAL_USED_SIZE 칼럼 정보를 이용해서 테이블스페이스의 실 사용량을 확인할 수 있습니다.
- X$SEGMENT의 TOTAL_USED_SIZE 칼럼은 BUG-31372 에서 추가되었습니다.
- BUG-31372 가 반영된 버전은 아래와 같습니다.
- ALTIBASE HDB 5.3.3.33
- ALTIBASE HDB 5.3.5.15
- ALTIBASE HDB 5.5.1.0.3
- 따라서 BUG-31372 가 변영되지 않은 ALTIBASE HDB 5.3.3, 5.3.5, 5.5.1 버전에서는 아래 쿼리 사용 시 에러가 발생할 수 있습니다.
- 이 버전에서는 언두 테이블스페이스와 임시 테이블스페이스의 실 사용량을 구할 수 없습니다.
디스크 테이블스페이스 사용량 조회
디스크 테이블스페이스 사용량 조회 쿼리
SET LINESIZE 1024; SET COLSIZE 30; SELECT NAME TBS_NAME -- TBS_NAME : 디스크 테이블스페이스 이름 , TO_CHAR(D.MAX * PAGE_SIZE / 1024 /1024, '999,999,999') 'MAX(M)' -- MAX(M) : 테이블스페이스 최대 크기 , TO_CHAR(TOTAL_PAGE_COUNT*PAGE_SIZE/1024/1024, '999,999,999') 'TOTAL(M)' -- TOTAL(M) : 현재까지 할당된 총 페이지 크기 , DECODE(TYPE, 7, TO_CHAR((SELECT (SUM(TOTAL_EXTENT_COUNT*PAGE_COUNT_IN_EXTENT)*PAGE_SIZE)/1024/1024 FROM V$UDSEGS)+ (SELECT (SUM(TOTAL_EXTENT_COUNT*PAGE_COUNT_IN_EXTENT)*PAGE_SIZE)/1024/1024 FROM V$TSSEGS), '999,999,999') , /* UNDO */ TO_CHAR((ALLOCATED_PAGE_COUNT*PAGE_SIZE)/1024/1024, '999,999,999')) 'ALLOC(M)' -- ALLOC(M) : 현재까지 할당받은 페이지 중 '빈 페이지'를 제외한 '사용 중인 페이지'만의 합계 , DECODE(TYPE, 3, TO_CHAR(NVL(DS.USED, 0)/1024/1024, '999,999,999'), 4, TO_CHAR(NVL(DS.USED, 0)/1024/1024, '999,999,999') /* SYS_TEMP */ , LPAD('-', 12)) 'USED(M)' -- USED(M) : 사용 중인 페이지 중에서 데이터가 적재된 크기. TEMP와 UNDO 는 USED 를 구할 수 없음. , DECODE(TYPE, 7, TO_CHAR(((SELECT SUM(TOTAL_EXTENT_COUNT*PAGE_COUNT_IN_EXTENT) FROM V$UDSEGS)+ (SELECT SUM(TOTAL_EXTENT_COUNT*PAGE_COUNT_IN_EXTENT) FROM V$TSSEGS)) / D.MAX* 100, '99.99') , /* UNDO */ 3, TO_CHAR(NVL(DS.USED, 0)/(D.MAX*PAGE_SIZE)* 100, '99.99') , 4, TO_CHAR(NVL(DS.USED, 0)/(D.MAX*PAGE_SIZE)* 100, '99.99') , /* TEMP */ TO_CHAR(ALLOCATED_PAGE_COUNT / D.MAX * 100, '99.99') ) 'USAGE(%)' -- USAGE(%) : MAX대비 USED. TEMP, UNDO 의 경우 MAX대비 ALLOC , DECODE(STATE, 1, 'OFFLINE', 2, 'ONLINE', 5, 'OFFLINE BACKUP', 6, 'ONLINE BACKUP', 128, 'DROPPED', 'DISCARDED') STATE -- STATE : 테이블스페이스 상태 , D.AUTOEXTEND FROM V$TABLESPACES T LEFT OUTER JOIN (SELECT SPACE_ID , SUM(TOTAL_USED_SIZE) USED FROM X$SEGMENT GROUP BY SPACE_ID ) DS ON DS.SPACE_ID = T.ID ,(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 T.ID = D.SPACEID ;
결과 예시