Oracle
[Oracle] 오라클 테이블 사이즈 조회
안드선생
2023. 1. 9. 16:55
반응형
오늘은 오라클 DB의 테이블 사이즈를 조회 하는 방법과
인덱스 사이즈 그리고 1Row 별 사이즈 까지 조회하는 방법에 대해 알아보겠습니다.
1. 테이블 사이즈 조회
아래 쿼리는 소유자 별로 소유한 테이블들의 사이즈를 조회하는 쿼리이다.
SELECT owner, segment_name, segment_type, sum(bytes)/1024/1024 as MB
FROM dba_segments
WHERE segment_type='TABLE'
AND owner = '소유자명'
GROUP BY owner, segment_name, segment_type
ORDER BY MB desc;
ex) 쿼리 조회 결과
OWNER | SEGMENT_NAME | SEGMENT_TYPE | MB |
HONGCODING | MY_TABLE1 | TABLE | 43215 |
HONGCODING | MY_TABLE2 | TABLE | 32541 |
HONGCODING | MY_TABLE3 | TABLE | 1790 |
HONGCODING | MY_TABLE4 | TABLE | 521 |
또는 아래와 같은 쿼리로도 조회가 가능하다.
SELECT A.SEGMENT_NAME, ROUND(SUM(A.BYTES)/1024/1024) "SIZE_MB", A.SEGMENT_TYPE
FROM DBA_SEGMENTS A, DBA_TABLES B
WHERE A.SEGMENT_NAME = B.TABLE_NAME
AND A.SEGMENT_TYPE IN ('TABLE', 'TABLE_PARTITION')
AND A.OWNER = '소유자명'
GROUP BY A.SEGMENT_NAME, A.SEGMENT_TYPE
ORDER BY 2 DESC;
2. 인덱스 사이즈 조회
방법은 위의 2번 방법과 굉장히 유사하다.
쿼리의 TABLE을 넣는 자리에 INDEX를 넣으면 된다.
SELECT A.SEGMENT_NAME, ROUND(SUM(A.BYTES)/1024/1024) "SIZE_MB", A.SEGMENT_TYPE
FROM DBA_SEGMENTS A, DBA_INDEXES B
WHERE A.SEGMENT_NAME = B.INDEX_NAME
AND A.SEGMENT_TYPE IN ('INDEX', 'INDEX PARTITION')
AND A.OWNER = '소유자명'
GROUP BY A.SEGMENT_NAME, A.SEGMENT_TYPE
ORDER BY 2 DESC;
ex) 쿼리 조회 결과
SEGMENT_NAME | SIZE_MB | SEGMENT_TYPE |
MY_INDEX1 | 3512 | INDEX |
MY_INDEX2 | 2140 | INDEX |
MY_INDEX3 | 520 | INDEX |
3. 테이블 1Row 사이즈 조회
아래 쿼리는 테이블 별로 각 1Row 의 사이즈를 조회하는 쿼리이다.
select table_name, sum(data_length) byte
from all_tab_columns
where owner = '소유자명'
group by table_name
order by byte desc;
해당 결과로
1 Row 사이즈 * Row 수 를 계산하여
새로 넣을 데이터의 총 크기도 알 수가 있겠죠?
이렇게 오늘은
테이블 사이즈를 조회하는 방법과
인덱스 사이즈를 조회하는 방법,
테이블 별 1Row 의 사이즈를 조회하는 방법에 대해 알아보았습니다.
긴 글 읽어주셔서 감사합니다!
반응형