IT 기술/Oracle

[삽질기] 백업하려는 테이블의 저장 공간 사용량을 알아보려했습니다.

ㅇㅔ ㄷㅡ 2008. 2. 11. 21:58
 오늘도 삽질이 계속 되고있습니다. 단순히 백업해둔 파일로 새로운 인스턴스를 띄워서 예전 테이블들을 백업하는 작업이었는데요... 암튼... 속도도 예상보다 많이 느리고... 티볼리 데몬에도 문제가 생기는 등 갖가지 난관에 봉착했습니다. ㅜ.ㅜ

암튼... 이 모든 작업을 하기전에 먼저 확인할 내용이 있죠. 현재 백업하려는 테이블 들의 총 용량이 얼마나 되는지 입니다. 이걸 알아야 백업한 파일을 어디에 저장할 건지 그리고 백업을 어떻게 할건지를 결정할 수 있겠죠. 그래서 이것 저것 알아보다가 정확하진 않지만 알아보는 쿼리를 얻었습니다. 제가 정확한 결과를 찾겠다며 헤메고 있자, 사수님이 준 쿼리입니다. ^^;
꼭 정확한 사용량을 알아야 겠다면 통계자료를 수집하도록 한 뒤에 dba_tables같은 View를 이용하면 되겠지만, 서버에 부하를 주는 작업을 할 수 없는 상황이라면 아래와 같은 쿼리문으로 대략적인 사용량을 알아 볼 수 있습니다.


SELECT   owner,segment_type, tablespace_name, SEGMENT_NAME, SUM(BYTES/(1024*1024))  SIZE_IN_MEG
FROM DBA_SEGMENTS
WHERE tablespace_name IN (SELECT tablespace_name FROM DBA_TABLESPACES WHERE owner NOT IN
  ('SYS','SYSTEM','PUBLIC','OUTLN','WMSYS','ORDSYS','ORDPLUGINS','MDSYS','CTXSYS'
,'XDB','WKSYS','OLAPSYS'))
--GROUP BY rollup( owner,segment_type,tablespace_name,SEGMENT_NAME)
GROUP BY owner,segment_type,tablespace_name,SEGMENT_NAME
ORDER BY SIZE_IN_MEG DESC


위의 쿼리문을 적당히 고치면 원하는 내용을 얻을 수 있습니다.원하는 테이블만, 혹은 원하는 유저의 테이블만... 같은 조건을 주면 됩니다.