[오라클 SQL] 테이블별 용량 조회 및 테이블스페이스 사용량 확인 방법

 Oracle(오라클) 데이터베이스를 운영하다 보면, 특정 테이블이 얼마나 많은 데이터를 차지하고 있는지, 또는 테이블스페이스가 얼마나 사용되고 있는지를 정확히 파악해야 할 때가 많습니다.

이 글에서는 테이블별 용량 확인 SQL전체 테이블스페이스 사용량 조회 쿼리, 그리고 테이블이 속한 테이블스페이스 확인 방법까지 실무에 바로 적용 가능한 쿼리를 예시와 함께 정리해 드립니다.



🔸 1. 오라클 테이블별 용량 확인 SQL

SELECT
    segment_name AS table_name,
    segment_type,
    SUM(bytes) / 1024 / 1024 AS size_mb
FROM
    user_segments
WHERE
    segment_type = 'TABLE'
GROUP BY
    segment_name, segment_type
ORDER BY
    size_mb DESC;


📌 설명: 현재 스키마의 모든 테이블 용량을 MB 단위로 정렬해서 보여줍니다.


🔸 2. 테이블 및 인덱스를 포함한 전체 객체별 용량

SELECT
    segment_name,
    segment_type,
    SUM(bytes) / 1024 / 1024 AS size_mb
FROM
    user_segments
GROUP BY
    segment_name, segment_type
ORDER BY
    size_mb DESC;


🔸 3. 특정 테이블 용량만 확인

SELECT
    segment_name,
    segment_type,
    bytes / 1024 / 1024 AS size_mb
FROM
    user_segments
WHERE
    segment_name = UPPER('your_table_name');


🔸 4. 오라클 테이블스페이스 전체 용량 및 사용량 확인

SELECT
    df.tablespace_name,
    ROUND(df.total_mb, 2) AS total_mb,
    ROUND(nvl(fs.free_mb, 0), 2) AS free_mb,
    ROUND(df.total_mb - nvl(fs.free_mb, 0), 2) AS used_mb,
    ROUND((df.total_mb - nvl(fs.free_mb, 0)) / df.total_mb * 100, 2) AS used_pct
FROM
    (SELECT
         tablespace_name,
         SUM(bytes) / 1024 / 1024 AS total_mb
     FROM
         dba_data_files
     GROUP BY
         tablespace_name) df
LEFT JOIN
    (SELECT
         tablespace_name,
         SUM(bytes) / 1024 / 1024 AS free_mb
     FROM
         dba_free_space
     GROUP BY
         tablespace_name) fs
ON
    df.tablespace_name = fs.tablespace_name
ORDER BY
    used_pct DESC;


🔸 5. 특정 테이블의 테이블스페이스 위치 확인

SELECT
    table_name,
    tablespace_name
FROM
    user_tables
WHERE
    table_name = UPPER('your_table_name');


✅ 마무리

오라클에서 용량 문제는 성능과 직결되기 때문에, 위와 같은 쿼리를 주기적으로 활용하면 데이터베이스 운영의 안정성과 효율성을 높일 수 있습니다.

위 쿼리들은 DBA 또는 개발자가 실무에서 자주 사용하는 기본이면서도 강력한 도구입니다. 필요 시 스크립트로 저장해 두고 모니터링 작업에 활용해 보세요.


다음 이전