본문 바로가기
컴퓨터관련/Oracle

[Oracle]오라클 테이블 및 인덱스 사용 용량 확인하기

by 빛과 어둠사이 2023. 8. 2.
728x90
반응형
SMALL

오늘은 오라클에서 테이블 및 인덱스의 사용중인

사이즈를 확인하는 방법을 정리해보고자 합니다.

 

저는 Oracle을 사용중인데 얼마전에 보니 테이블 스페이스의 용량이

많이 부족하더라고요.

그래서 확인을 해봤더니 특정 테이블에서 엄청난 용량을 가지고 있더라고요.

이러한 테이블에 대해서 정리를 하면서 용량을 확보하려고 합니다.

 

오늘은 이렇게 용량을 차지하는 테이블을 알려고 할 때 했던 방법에 대해서

정리를 해보고자 합니다.

 

반응형

 

1. 테이블에서 사용중인 용량 확인하기

우선 table에서 사용중인 용량을 확인해보기로 했습니다.

우선 전체 테이블에서 사용중인 용량을 확인해보았습니다.

쿼리는 다음과 같습니다.

select 
        table_name, 
        num_rows,
        num_rows * avg_row_len, 
        round((num_rows * avg_row_len/1024/1024),2) "SIZE(Mb)", 
        round((num_rows * avg_row_len/1024/1024/1024),2) "SIZE(Gb)",
        last_analyzed
from user_tables
;

 

위의 쿼리를 이용하면 전체 테이블들에 대해서

사용중인 용량을 확인할 수 있습니다.

 

실제로 작성한 쿼리는 다음과 같습니다.

 

위처럼 쿼리를 작성하였고,

실행을 해보았습니다.

그랬던 사용중인 용량들에 대해서

아래처럼 나오는 것을 확인할 수 있었습니다.

 

 

테이블명 등은 제가 운영하는 오라클DB이기 때문에

숨겨놓았습니다.

저렇게 해당 테이블에서 사용중인 용량을 확인할 수 있었습니다.

 

 

 

이 중 용량이 큰 것들을 몇개 뽑아내어

다시 돌려보았습니다.

특정 몇몇 테이블에 대해서만 용량을 확인해보았습니다.

쿼리는 다음과 같습니다.

 

select 
        table_name, 
        num_rows,
        num_rows * avg_row_len, 
        round((num_rows * avg_row_len/1024/1024),2) "SIZE(Mb)", 
        round((num_rows * avg_row_len/1024/1024/1024),2) "SIZE(Gb)",
        last_analyzed
from user_tables
where table_name IN ('테이블명')
;

 

위 테이블명 란에 내가 찾아보고자 하는

table의 이름을 적었습니다.

 

실제 돌린 쿼리는 다음과 같습니다.

 

위처럼 쿼리를 작성하여 실행해보았습니다.

테이블명은 숨겨놓았습니다.

그리고 실행을 하면 결과는 아래처럼 나오게 됩니다.

 

 

위처럼 해당 테이블들에서 사용중인 용량을 확인할 수 있습니다.

용량을 보니 어마어마하네요.

제일 큰 하나는 한개의 테이블인데 870기가 정도가 되네요.

 

이제 정리해야 할 테이블을 확인할 수 있었습니다.

 

 

2. 인덱스에서 사용중인 용량 확인하기

이번에는 index에서 사용중인 용량을 확인해보도록 하겠습니다.

인덱스도 용량을 은근 잡아먹고 있더라고요.

그래서 인덱스 사용량에 대해서 확인해보았습니다.

 

확인하는 쿼리는 다음과 같습니다.

SELECT owner,segment_name,segment_type,sum(bytes)/1024/1024 as MB
FROM dba_segments
WHERE segment_type='INDEX' 
and OWNER = '' --테이블 소유자 이름
--and segment_name = 'INDEX명'
GROUP BY owner,segment_name,segment_type

오너명은 생략을 해도 됩니다.

인덱스명은 주석처리를 해놓았습니다.

오너명은 테이블 소유자의 이름으로 생략을 해주었을 때,

저는 SYS 게정에 대한 인덱스들도 많이 나오더라고요.

그런데 해당 부분은 전혀 볼 필요가 없다보니,

제가 쓰고 있는 소유자 계정명을 넣었습니다.

 

제가 실제 작성한 쿼리는 다음과 같습니다.

 

위처럼 작성하였습니다.

오너명은 숨겨놓았습니다.

 

위처럼 쿼리를 작성하고 실행을 하게 되면

결과는 아래처럼 나오게 됩니다.

 

 

위처럼 나와지는 것을 확인할 수 있습니다.

이렇게 해서 인덱스에서 사용중인 용량을 확인할 수 있습니다.

 

SMALL

 

 

오늘은 오라클에서 테이블 및 인덱스에서

사용중인 용량을 확인하는 방법에 대해서

정리를 해보았습니다.

 

 

 

 

 

이것이 오라클이다:Oracle 설치부터 PL/SQL 정복까지!, 한빛미디어

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다

728x90
반응형
LIST