[오라클 SQL] 오라클 TableSpace 용량 확인하기
오늘은 오라클에서 TableSpace 용량을 SQL로 확인하는 방법에 대해서 알려드리려고 합니다.
최근에, 프로젝트를 하면서 매번 Database 용량 확인하기 귀찮아서..이참에 각 서버들의 용량을 확인하는 모니터링 프로그램을 만들면서 작성한 SQL문으로 저도 구글링을 하면서 구현한 것이고, 향후에 또 쓸 일이 있으면 참고하려고 포스팅 하게 되었습니다.
바로 SQL문을 작성해서 TableSpace 용량을 확인해 보도록 하겠습니다.
TableSpace 용량 확인 SQL 문
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | SELECT A.TABLESPACE_NAME "테이블스페이스명", round((sum(A.BYTES) - sum(B.FREE)) / power(1024,2), 2) "사용공간", round(sum(B.FREE)/ power(1024,2), 2) "여유 공간", round(sum(A.BYTES)/ power(1024,2), 2) "총크기", TO_CHAR( (sum(B.FREE) / sum(A.BYTES) * 100) , '999.99')||'%' "여유공간" FROM ( SELECT FILE_ID, TABLESPACE_NAME, SUM(BYTES) BYTES FROM DBA_DATA_FILES where 1=1 GROUP BY FILE_ID,TABLESPACE_NAME,FILE_NAME,SUBSTR(FILE_NAME,1,200) ) A, ( SELECT TABLESPACE_NAME, FILE_ID, SUM(NVL(BYTES,0)) FREE FROM DBA_FREE_SPACE where 1=1 GROUP BY TABLESPACE_NAME,FILE_ID ) B WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.FILE_ID = B.FILE_ID group by a.TABLESPACE_NAME order by 1 |
실행 결과
위와 같이 현재 Database의 TableSpace 용량이 알맞게 조회된 것을 확인하실 수 있습니다.
참고로, 저는 MB 단위로 계산하여 용량을 구했습니다. 만약게 MB 단위가 아닌 GB 단위로 TableSpace 용량을 조회하고 싶으시다면, power(1024, 2) -> power(1024, 3) 으로 변경해 주시면 GB 단위로 변경해서 데이터가 조회되는 것을 확인하실 수 있습니다.
감사합니다.