表領域の断片化状況を確認する

Pocket

【概要】
DBA_DATA_FILESおよびDBA_FREE_SPACEにより、表領域の断片化状況を確認する。
【SQL文】
/*
|| ■表領域の断片化状況を確認する
||
|| 【項目の説明】
|| TABLESPACE :エクステントが設定されている表領域の名前
|| FRAGMENTS :対象表領域の断片化数
|| MAX_FREE     :対象表領域のエクステントの最大サイズ
|| TOTAL             :対象表領域のエクステントの合計サイズ
|| TOTAL_FREE :空きエクステントの合計サイズ(MB)
|| USED                :対象表領域の使用率(%)
*/
set echo off
set lines 120
set pages 100

clear col
ttitle off

col TABLESPACE for a30
col FRAGMENTS for 999
col MAX_FREE for 999,999,999
col TOTAL  for 999,999,999
col TOTAL_FREE for 999,999,999,999
col USED  for 999

ttitle left ‘■■■ 表領域の断片化状況 ■■■’
spool tbs_frag_info.lis

SELECT total.tablespace_name TABLESPACE
, FRAGMENTS
, max_free_bytes/(1024*1024) MAX_FREE
, total_bytes/(1024*1024) TOTAL
, total_free_bytes/(1024*1024) TOTAL_FREE
, (1-nvl(total_free_bytes, 0)/total_bytes)*100 USED
FROM (SELECT SUM(bytes) TOTAL_BYTES
, tablespace_name
FROM dba_data_files
GROUP BY tablespace_name) TOTAL
,(SELECT SUM(bytes) TOTAL_FREE_BYTES
, MAX(bytes) MAX_FREE_BYTES
, COUNT(bytes) FRAGMENTS
, tablespace_name
FROM dba_free_space
GROUP BY tablespace_name) FREE
WHERE total.tablespace_name = free.tablespace_name(+)
ORDER BY 1
;
spool off
clear col
ttitle off
set line 80

以上です (^^♪