본문 바로가기
TechNical/Oracle

10g 모든 테이블 사이즈를 확인해보자

by 강멍멍이 2007. 12. 8.
반응형

오라클 10g 에서 제공하는 EM에서 테이블 > 세그먼트를 보면

테이블이 얼마의 공간을 할당 받았고 실제로 데이터를 얼마를 쓰고 있는지를 알 수가 있다.

허나...... 스키마에 테이블이 한두개냐 -ㅅ-.. 하나씩 하나씩 언제 그걸 다 보라고 ㅗㅡㅡㅗ

고로 SQL*PLUS에서 쿼리로 테이블 데이터 사이즈를 확인해 보기로 했다.

일단 어떤 프로시져를 사용 할 지 보자.

dbms_space.object_space_usage 란 놈을 사용 할 거다.

procedure object_space_usage (
 object_owner                       in                 varchar2        ,
 object_name                        in                 varchar2        ,
 object_type                        in                 varchar2        ,
 sample_control                     in                   number        ,
 space_used                        out                   number        ,
 space_allocated                   out                   number        ,
 partition_name                     in                 varchar2 default,
 preserve_result                    in                  boolean default,
 timeout_seconds                    in                   number default
);
요렇게 생겨 먹은 녀석이다.
 
일단 analyze를 먼저 해 주는게 정확도에 영향을 주지 않을까 싶다 -_-;;

EM에서 잘 찾아 보면 통계 수집이란 항목이 있다. 원하는 스키마의 모든 테이블을

선택해서 분석해주자.

자 그럼.. For 루프를 사용해서 해당 스키마의 모든 테이블 견적을 뽑아 보자!!

--------------------------------------------------------------------------------

set serveroutput on

declare

su number;
sa number;
cp number;

owner_name varchar2(10) := 'SCOTT';

type tb_type is table of user_tables.table_name%TYPE

index by binary_integer;

tb_name tb_type;

i binary_interger := 0;

begin

 for k in (select table_name from dba_tables where owner=owner_name) loop

  i := i + 1;

  tb_name(i) := k.table_name;

 end loop

dbms_output.put_line('_ TABLE_NAME ___  USED SPACE(KB)

                                _____ALLOCATE SPACE(KB) ______ ' );

 for j in 1..i loop

  dbms_space.object_space_usage(owner_name,tb_name(j),'TABLE',NULL,su,sa,cp);

  dbms_output.put_line(RPAD(tb_name(j),15) || '    ' ||

                                 RPAD(ROUND(su/1024),2),17) || '    ' || sa/1024);

 end loop

end;

/

set serveroutput off

--------------------------------------------------------------------------------

쿠우........ 타자 치는데 손 아퍼 죽는 줄 알았다. ㅠ_ㅠ... 컴터가 밥상위에 있다. ㅋ

암튼.. 오타가 있을 수 있으니 주의를 하자 ㅡㅡ;;

owner_name에 분석을 하고자 하는 녀석의 이름을 적으면 된다.

그 녀석이 소유권을 가지고 있는 모든 테이블을 분석 할 것이다.

그다지 설명이.. 필요 한가 ㅡㅡ??

암튼.. 손목 아퍼서 여기까지 ㅡㅠㅡ//


에혀.. 네이버꺼 옮겨 오기 귀찮다 ㅡㅡ;; 아직도 덜 가져 왔군 그랴 ~

반응형

댓글