Database/Oracle Database
[오라클] TABLESPACE 관련 스크립트
Dong538
2022. 1. 21. 11:38
테이블스페이스 전체 용량과 현재 사용량을 조회하는 쿼리입니다:
REM NAME : 테이블 스페이스의 이름.
REM FILECNT : 해당 테이블 스페이스의 파일 수.
REM TOTAL(MB) : 총 파일시스템에 할당된 용량(단위, 메가 바이트 ).
REM USED(MB) : 사용된 용량( 단위 , 메가바이트 ).
REM FREE(MB) : 여유공간 ( 단위, 메가바이트 ),
REM MAXBYTE(MB ) : 자동 증가할 수 있는용량 ( 단위, 메가바이트 )
COL NAME FOR A15
SELECT tbs.tablespace_name as "NAME", tbs.FILE_NAME "FILE_NAME", tbs.FILECNT as "FILECNT", tbs.TOTAL as "TOTAL(MB)"
, (tbs.TOTAL - nvl(fr.FREE,0)) as "USED(MB)" , nvl(fr.FREE,0) as "FREE(MB)"
, nvl(tbs.MAX,0) as "MAXBYTE(MB)", nvl(tbs.TOTAL- fr.FREE,0)/tbs.TOTAL *100 as "USED(%)"
FROM (select tablespace_name, sum(bytes/1024/1024) as "FREE"
from dba_free_space
group by tablespace_name) fr,
(select tablespace_name, FILE_NAME, sum(bytes/1024/1024) as "TOTAL", count(*) as "FILECNT",
sum(maxbytes/1024/1024) as "MAX"
from dba_data_files
group by tablespace_name, FILE_NAME) tbs
WHERE tbs.tablespace_name = fr.tablespace_name (+)
ORDER BY "NAME";
예시 결과:
NAME FILE_NAME FILECNT TOTAL(MB) USED(MB) FREE(MB) MAXBYTE(MB) USED(%)
--------------- --------------------------------------------- ---------- ---------- ---------- ---------- ----------- ----------
SYSAUX /u01/app/oracle/oradata/ORCL/sysaux01.dbf 1 660 603.25 56.75 32767.9844 91.4015152
SYSTEM /u01/app/oracle/oradata/ORCL/system01.dbf 1 900 895.25 4.75 32767.9844 99.4722222
UNDOTBS1 /u01/app/oracle/oradata/ORCL/undotbs01.dbf 1 345 24.25 320.75 32767.9844 7.02898551
USERS /u01/app/oracle/oradata/ORCL/users01.dbf 1 5 4.25 .75 32767.9844 85
TABLESPACE별 사용량 보기
select
tablespace_name,
round(used_space/1024/1024, 2) "used_space(mb)",
round(tablespace_size/1024/1024,2) "tablespace_size(mb)",
round(used_percent) used_percent
from dba_tablespace_usage_metrics
order by used_percent desc;
[ 일반 테이블스페이스 조회 ]
-- 테이블스페이스 상태 조회
col tablespace_name for a30
SQL> select tablespace_name, status, contents, extent_management, segment_space_management
2 from dba_tablespaces
3 where rownum < 10;
TABLESPACE_NAME STATUS CONTENTS EXTENT_MANAGEMENT SEGMENT_SPAC
------------------------------ ------------------ --------------- -------------------- ------------
SYSTEM ONLINE PERMANENT LOCAL MANUAL
SYSAUX ONLINE PERMANENT LOCAL AUTO
UNDOTBS1 ONLINE UNDO LOCAL MANUAL
TEMP ONLINE TEMPORARY LOCAL MANUAL
USERS ONLINE PERMANENT LOCAL AUTO
-- 테이블스페이스 크기, 파일위치 조회
select tablespace_name, status, contents, extent_management, segment_space_management
from dba_tablespaces;
-- 테이블스페이스 크기, 파일위치 조회 (2) (1)과 동일한 결과 나옴.
SQL> select tablespace_name, bytes/1024/1024 mb, file_name from dba_data_files where rownum < 10;
-- 데이터파일의 실제 사용량 조회
set line 200
col file# for 999
col ts_name for a10
col total_blocks for 9999999
col used_blocks for 9999999
col pct_used for a10
select distinct d.file_id file#
, d.tablespace_name ts_name
, d.bytes/1024/1024 mb
, d.bytes / 8192 total_blocks
, sum(e.blocks) used_blocks
, to_char(nvl(round(sum(e.blocks)/(d.bytes/8192),4),0)*100, '09.99') || ' %' pct_used
from dba_extents e, dba_data_files d
where d.file_id = e.file_id(+)
group by d.file_id, d.tablespace_name, d.bytes
order by 1,2;
FILE# TS_NAME MB TOTAL_BLOCKS USED_BLOCKS PCT_USED
1 SYSTEM 2610 334080 290736 87.03 %
2 SYSAUX 3740 478720 455496 95.15 %
3 UNDOTBS1 30720 3932160 67088 01.71 %
4 UNDOTBS1 30720 3932160 65296 01.66 %
5 USERS 1057.5 135360 132488 97.88 %