티스토리 뷰

앞으로 보안의 중요성 때문에 툴을 사용하기 더 힘들어질지도 모른다..

평소에 거들떠도 안보던 쿼리들이 소중하게 느껴지는 것도 이 때문이다.

암튼 테이블 스페이스가 full이 발생하여, 이 테이블 스페이스안의 오브젝트들을 확인하고,

사이즈가 좀 큰 녀석부터 드랍하고자 할때도 이 쿼리는 다방면에서 유용하다. ^^ 


1. 각 테이블 스페이스의 가용공간 / %


select nvl(b.tablespace_name,

       nvl(a.tablespace_name,'UNKNOWN')) "Tablespace",

       kbytes_alloc "Allocated MB",

       kbytes_alloc-nvl(kbytes_free,0) "Used MB",

       nvl(kbytes_free,0) "Free MB",

       ((kbytes_alloc-nvl(kbytes_free,0))/kbytes_alloc) "Used",

       data_files "Data Files"

  from ( select sum(bytes)/1024/1024 Kbytes_free,

                max(bytes)/1024/1024 largest,

                tablespace_name

           from sys.dba_free_space

          group by tablespace_name ) a,

       ( select sum(bytes)/1024/1024 Kbytes_alloc,

                tablespace_name,

                count(*) data_files

           from sys.dba_data_files

          group by tablespace_name )b

 where a.tablespace_name (+) = b.tablespace_name

   and (:TABLESPACE_NAME is null or 

   instr(lower(b.tablespace_name),lower(:TABLESPACE_NAME)) > 0)

 order by 1


2. 테이블 스페이스별 오브젝트 / LastDDLTime


select a.owner "Owner", 

       a.tablespace_name "Tablespace", 

       a.segment_name "Segment", 

       a.extents "Extents", 

       a.bytes/1024/1024 "Megabytes"

       ,b.last_ddl_time

  from sys.dba_segments a, dba_objects b

 where upper(substr(a.segment_name,1,4)) != 'BIN$'

   and upper(substr(a.segment_name,1,3)) != 'DR$'

   and (:TABLESPACE_NAME is null or 

   instr(lower(a.tablespace_name),lower(:TABLESPACE_NAME)) > 0)

   and a.segment_name = b.object_name

 order by a.owner, a.extents desc, a.tablespace_name, a.segment_name

;


혹시 내가 계속 오라클을 하게되고, 운영을 하게 되면 사용하게 되겠지~~ 

댓글
댓글쓰기 폼