테이블스페이스 및 테이블 관리 쿼리

Posted at 2011. 1. 27. 13:34 | Posted in Database/Oracle
테이블 스페이스 용량 확인
select
	b.file_name as file_name,
	b.tablespace_name as tablespace_name,
	b.bytes/1024 as total_size,
	((b.bytes-sum(nvl(a.bytes,0))))/1024 as used_size,
	(sum(nvl(a.bytes,0)))/1024 free_size,
	trunc((sum(nvl(a.bytes,0))/(b.bytes))*100,3) || '%' free_percent
from
	dba_free_space a, dba_data_files b
where
	a.file_id(+) = b.file_id
	-- and a.tablespace_name like 'DEV_%'
group by
	b.tablespace_name, b.file_name, b.bytes
order by
	b.tablespace_name;

테이블별 용량 확인
select
	segment_name,
	sum(bytes) as bytes
from
	dba_segments
where
	segment_type = 'TABLE'
	-- and owner like 'DEV_%' 
group by
	segment_name
order by
	bytes desc;



한번 늘어난 테이블스페이스(실제 파일)은 사이즈가 커지면 줄어 들지 않습니다. DBA 작업을 하지 않는 이상...

delete 문으로 데이터를 삭제할 경우 데이터는 삭제되지만 테이블의 공간을 차지하고 있습니다.

입력(insert)과 삭제(delete)를 반복해도 테이블의 용량은 계속 늘어나게 됩니다.

데이터가 풀차려고 하면 테이블을 정리해줘야합니다. (Table Shrink)

ALTER TABLE 테이블명 ENABLE ROW MOVEMENT;
ALTER TABLE 테이블명 SHRINK SPACE;
ALTER TABLE 테이블명 SHRINK SPACE CASCADE;
ALTER TABLE 테이블명 DISABLE ROW MOVEMENT;

  1. 작은입맞춤
    포스트 담아가도 되겠죠?~ 출처남겨두겠습니다.

댓글 (Comment)

Name*

Password*

Link (Your Website)

Comment

SECRET | 비밀글로 남기기