表領域空き状況を確認する

Pocket

【概要】
DBA_DATA_FILESおよびDBA_FREE_SPACEにより、表領域の空き状況を確認する。
【SQL文】
/*
|| ■表領域空き状況を確認する
||
|| 【項目の説明】
|| NAME :監視するデータベースの表領域名。ローカル管理一時表領域は出力しません
|| EXTENTMANAGEMENT:表領域のエクステント管理方式 DICTIONARY or LOCAL
|| FILE_COUNT :表領域が構成されている物理ファイル数
|| TOTAL :表領域の容量
|| USED :表領域内で既に使用(アロケート)されている容量
|| FREE_COUNT :連続している使用可能領域の数
|| FREE_EXTENTS :表領域内の使用可能領域
|| MAX_FREE :連続した未使用領域の中で最大のもの
|| FREE :表領域の容量に対する使用可能領域の比率を%で表示
||
|| 表領域名やサイズ等は適時入れ替えてください。
*/
set line 120
set pages 1000

clear col
ttitle off

col NAME form a20 head “表領域名”
col EXTENTMANAGEMENT form a10 head “エクステ|ント管理”
col FILE_COUNT form 9,999 head “ファイル数”
col TOTAL form 999,990.99 head “合計(MB)”
col USED form 999,990.99 head “使用容量(MB)”
col FREE_COUNT form 99,999 head “空き|断片数”
col FREE_EXTENTS form 99,990.99 head “空き容量(MB)”
col MAX_FREE form 999,990.99 head “最大空断片|サイズ(MB)”
col FREE form 990.00 head “空き率|(%)”

ttitle left ‘■■■ 表領域の空き情報表示 ■■■’
spool tbs_space_info.lis

SELECT ts.name NAME
, DECODE(ts.bitmapped, 0, ‘DICTIONARY’, ‘LOCAL’) EXTENTMANAGEMENT
, df.file_count FILE_COUNT
, df.total_bytes/(1024*1024) TOTAL
, NVL(fs.free_count,0) FREE_COUNT
, ((df.total_bytes) – NVl(fs.free_extents,0))/(1024*1024) USED
, NVL(fs.free_extents,0)/(1024*1024) FREE_EXTENTS
, NVL(fs.max_free,0)/(1024*1024) MAX_FREE
, TRUNC((NVL(fs.free_extents,0)/df.total_bytes)*100,2) FREE
FROM sys.ts$ ts
,(SELECT tablespace_name
, count(user_bytes) FILE_COUNT
, sum(user_bytes) TOTAL_BYTES
FROM dba_data_files
GROUP by tablespace_name) df
,(SELECT tablespace_name
, count(fs.bytes) FREE_COUNT
, sum(fs.bytes) FREE_EXTENTS
, max(fs.bytes) MAX_FREE
FROM dba_free_space fs
GROUP BY tablespace_name) fs
WHERE ts.name = fs.tablespace_name(+)
AND ts.name = df.tablespace_name
AND df.file_count !=0
ORDER BY 9,1
;
spool off
clear col
ttitle off
set line 80

以上です (^^♪