DB 관리 TIP

[Altibase] 테이블스페이스 사용량

mitomi 2021. 6. 3. 21:56
반응형
SMALL

 DB 관리 매일매일 체크해야 하는 몇 가지가 있는데,  기본 중에 기본이 용량 관리 아닌가 싶다.

 테이블스페이스 사용량 확인하는 쿼리 확인해 보자.

 

1. 메모리 테이블스페이스 조회

     SELECT 

         TO_CHAR(MEM_MAX_DB_SIZE/1024/1024, '999,999,999') '       MAX(M)',
         TO_CHAR(MEM_ALLOC_PAGE_COUNT*32/1024, '999,999,999') '        TOTAL(M)',
         TO_CHAR((MEM_ALLOC_PAGE_COUNT-MEM_FREE_PAGE_COUNT)*32/1024, '999,999,999') '  ALLOC(M)',
          (SELECT TO_CHAR(SUM((FIXED_USED_MEM + VAR_USED_MEM))/1024/1024, '999,999,999')
          FROM V$MEMTBL_INFO) '      USED(M)',
          TO_CHAR((((MEM_ALLOC_PAGE_COUNT-MEM_FREE_PAGE_COUNT)*32*1024)/MEM_MAX_DB_SIZE)*100, '99.99') 'USAGE(%)'
     FROM V$DATABASE ;

    

2. 디스크 테이블스페이스 조회

  SELECT NAME TBS_NAME
     , TO_CHAR(D.MAX * PAGE_SIZE / 1024 /1024, '999,999,999') 'MAX(M)'
     , TO_CHAR(TOTAL_PAGE_COUNT*PAGE_SIZE/1024/1024, '999,999,999') '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') ,
       TO_CHAR((ALLOCATED_PAGE_COUNT*PAGE_SIZE)/1024/1024, '999,999,999')) '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)'
     , 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'),
                    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(%)'
     , DECODE(STATE, 1, 'OFFLINE', 2, 'ONLINE', 5, 'OFFLINE BACKUP', 6, 'ONLINE BACKUP', 128, 'DROPPED', 'DISCARDED') 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
;

 

3. 언두테이블스페이스 사용량 

 

 SELECT T.NAME TBS_NAME
     , ROUND(D.MAX * PAGE_SIZE / 1024 /1024, 2) 'MAX(M)'   -- 언두 테이블스페이스의 최대 크기
     , ROUND((TOTAL_PAGE_COUNT * PAGE_SIZE) / 1024 / 1024, 2) 'TOTAL(M)'  -- 언두 테이블스페이스로 할당받은 전체 크기
     , ROUND((U.TOTAL_EXT_CNT*PROP.EXTENT_SIZE)/1024/1024, 2) 'ALLOC(M)'

       -- 현재까지 할당 받은 페이지 중 '빈 페이지'를 제외한 '사용 중인 페이지'만의 합계
     , ROUND(((U.TX_EXT_CNT+U.USED_EXT_CNT+U.UNSTEALABLE_EXT_CNT) * PROP.EXTENT_SIZE)/1024/1024, 2) 'USED(M)'                       -- 변경 트랜잭션에 의해 사용 중이거나 재사용할 수 없는 EXTENT의 크기
     , ROUND((((U.TX_EXT_CNT+U.USED_EXT_CNT+U.UNSTEALABLE_EXT_CNT) * PROP.EXTENT_SIZE)/(D.MAX*PAGE_SIZE))*100, 2)

       'USAGE(%)'    -- 사용량(MAX 대비 USED)
     , DECODE(STATE,1,'OFFLINE',2,'ONLINE',5,'OFFLINE BACKUP',6,'ONLINE BACKUP',128,'DROPPED', 'DISCARDED') STATE

       --  테이블스페이스 상태 , D.AUTOEXTEND
  FROM V$TABLESPACES T ,

           (SELECT SPACEID , SUM(DECODE(MAXSIZE, 0, CURRSIZE, MAXSIZE)) AS MAX,

                      DECODE(MAX(AUTOEXTEND),1,'ON','OFF') 'AUTOEXTEND'  FROM V$DATAFILES
                      GROUP BY SPACEID) D ,

            V$DISK_UNDO_USAGE U ,

          (SELECT VALUE1 EXTENT_SIZE FROM V$PROPERTY WHERE NAME ='SYS_UNDO_TBS_EXTENT_SIZE') PROP
 WHERE T.ID = D.SPACEID
  AND T.ID = 3 ;

 

728x90