DB 전체용량에서 남은 용량 출력 0 1 489

by dizzyzz [MySQL] [2021.04.02 15:58:56]


name size (MB) percent % total size(MB)
a 10 10 100
b 20 25 100
c 5 5 100
d 10 10 100
e 5 5 100

 

고수분들의 도움을 받아 이렇게 사용중인 용량을 %로 출력했는데

남은 용량을 %로 출력하려니 또 벽에 부딪쳤습니다...

하나 해결되면 하나 막히고 참 어렵네요...

부탁드리겠습니다..

by 동동동 [2021.04.02 18:02:56]
SELECT TO_CHAR(SYSDATE, 'YYYYMMDDHH24MI') CheckDate
     , A.TABLESPACE_NAME AS "TABLESPACE", A.FILE_NAME AS "DataFile Name"
     , AUTOEXTENSIBLE
     , Case When AUTOEXTENSIBLE ='YES' Then
              Round(A.Total_Byte / (1024 * 1024))
            Else
              Round(A.BYTES / (1024 * 1024))
        End "TOTAL(MB)"
     , Round(A.BYTES / (1024 * 1024)) AS "EXTENSIBLE(MB)"
     , Round((A.BYTES - NVL(B.FREEBYTES,0)) / (1024 * 1024)) AS "Used(MB)"
     , Case When AUTOEXTENSIBLE ='YES' Then
              Round((A.Total_Byte - (NVL(A.BYTES,0)- NVL(B.FREEBYTES,0))) / (1024 * 1024)) 
            Else
              Round(NVL(B.FREEBYTES,0) / (1024 * 1024))
        End "Free(MB)"
     , Case When AUTOEXTENSIBLE ='YES' Then
              ROUND((NVL((A.Total_Byte - NVL(A.Total_Byte - (NVL(A.BYTES,0)- NVL(B.FREEBYTES,0)), 0)), 0) / A.Total_Byte) * 100)
            Else
              ROUND((NVL((A.BYTES - NVL(B.FREEBYTES,0)), 0) / A.BYTES) * 100)
        End "Used(%)"
     , Case When AUTOEXTENSIBLE ='YES' Then
              ROUND(NVL((A.Total_Byte - (NVL(A.BYTES,0)- NVL(B.FREEBYTES,0))),0)*100/A.Total_Byte)
            Else
              ROUND(NVL(B.FREEBYTES,0)*100/A.BYTES)
        End "Free(%)"
    FROM (
          SELECT TABLESPACE_NAME, FILE_NAME, FILE_ID, AUTOEXTENSIBLE, 
                 Max(Decode(AUTOEXTENSIBLE, 'YES', MAXBYTES, BYTES)) As Total_Byte,
                 SUM(BYTES) BYTES 
            FROM SYS.DBA_DATA_FILES 
           GROUP BY TABLESPACE_NAME, FILE_NAME, FILE_ID, AUTOEXTENSIBLE
          ) A
       , (
          SELECT TABLESPACE_NAME, FILE_ID,
                 SUM(NVL(BYTES,0)) FREEBYTES 
            FROM SYS.DBA_FREE_SPACE 
           GROUP BY TABLESPACE_NAME, FILE_ID
          ) B
    WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME(+)
      And A.FILE_ID = B.FILE_ID(+)
      And A.TABLESPACE_NAME Like '테이블스페이스명%'
    ORDER BY A.TABLESPACE_NAME, A.FILE_NAME ASC;


제가 사용중인 쿼리 입니다.

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입