
動作確認環境
- 導入製品:Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0
本記事では、表領域とデータファイルのサイズと拡張サイズ、最大サイズ、使用率、空き率を確認するSQLコマンドを紹介します。
この記事でわかること
- 表領域単位でサイズと使用率を確認するSQL
- 表領域単位でサイズと空き率を確認するSQL
- データファイル単位でサイズと使用率を確認するSQL
- データファイル単位でサイズと空き率を確認するSQL
目次
表領域単位でサイズと使用率を確認
各表領域の現在のサイズと使用サイズ、使用率を一覧で確認するSELECT文です。
set pages 300
set lines 300
col tablespace_name for a50
col NOW_SIZE[MB] for 9999999999
col USED_SIZE[MB] for 9999999999
col USED_PER for 999990.99
SELECT
df.tablespace_name,
SUM(df.bytes/(1024*1024)) as "NOW_SIZE[MB]",
SUM((df.bytes-NVL(fs.free_bytes,0))/(1024*1024)) as "USED_SIZE[MB]",
ROUND(SUM((df.bytes-NVL(fs.free_bytes,0))/(1024*1024))/SUM(df.bytes/(1024*1024)) * 100,2) as "USED_PER"
FROM
dba_data_files df
LEFT JOIN (
SELECT
file_id,
SUM(bytes) as free_bytes
FROM
dba_free_space
GROUP BY
file_id
) fs
ON
df.file_id = fs.file_id
GROUP BY
df.tablespace_name
;出力されるカラムは以下のとおりです。
- TABLESPACE_NAME:表領域名
- NOW_SIZE[MB]:表領域全体の現在サイズ(MB)
- USED_SIZE[MB]:使用済みサイズ(MB)
- USED_PER:使用率(%)
表領域単位でサイズと空き率を確認
各表領域の現在のサイズと空きサイズ、空き率を一覧で確認するSELECT文です。
set pages 300
set lines 300
col tablespace_name for a50
col NOW_SIZE[MB] for 9999999999
col FREE_SIZE[MB] for 9999999999
col FREE_PER for 999990.99
SELECT
df.tablespace_name,
SUM(df.bytes/(1024*1024)) as "NOW_SIZE[MB]",
SUM(NVL(fs.free_bytes,0)/(1024*1024)) as "FREE_SIZE[MB]",
ROUND(SUM(NVL(fs.free_bytes,0)/(1024*1024))/SUM(df.bytes/(1024*1024)) * 100,2) as "FREE_PER"
FROM
dba_data_files df
LEFT JOIN (
SELECT
file_id,
SUM(bytes) as free_bytes
FROM
dba_free_space
GROUP BY
file_id
) fs
ON
df.file_id = fs.file_id
GROUP BY
df.tablespace_name
;出力されるカラムは以下のとおりです。
- TABLESPACE_NAME:表領域名
- NOW_SIZE[MB]:表領域全体の現在サイズ(MB)
- FREE_SIZE[MB]:空きサイズ(MB)
- FREE_PER:空き率(%)
データファイルのサイズと使用率を確認
データファイルごとに、現在サイズと使用サイズ、自動拡張設定、拡張サイズ、最大サイズ、使用率をまとめて確認するSELECT文です。
表領域単位の集計だけでは見えない、ファイル単位の物理レイアウトや自動拡張の設定状況まで把握できます。
set pages 300
set lines 300
col tablespace_name for a50
col file_name for a80
col NOW_SIZE[MB] for 9999999999
col USED_SIZE[MB] for 9999999999
col autoextensible for a3
col NEXT_SIZE[MB] for 9999999999
col MAX_SIZE[MB] for 9999999999
col USED_PER for 99990.99
SELECT
df.tablespace_name,
df.file_name,
df.bytes/(1024*1024) as "NOW_SIZE[MB]",
(df.bytes-NVL(fs.free_bytes,0))/(1024*1024) as "USED_SIZE[MB]",
df.autoextensible,
(df.increment_by*(df.bytes/df.blocks))/(1024*1024) as "NEXT_SIZE[MB]",
df.maxbytes/(1024*1024) as "MAX_SIZE[MB]",
ROUND(((df.bytes-NVL(fs.free_bytes,0))/(1024*1024))/(df.bytes/(1024*1024)) * 100,2) as "USED_PER"
FROM
dba_data_files df
LEFT JOIN (
SELECT
file_id,
SUM(bytes) as free_bytes
FROM
dba_free_space
GROUP BY
file_id
) fs
ON
df.file_id = fs.file_id
ORDER BY
df.file_id
;出力されるカラムは以下のとおりです。
- TABLESPACE_NAME:表領域名
- FILE_NAME:データファイル名(物理パス)
- NOW_SIZE[MB]:データファイルの現在サイズ(MB)
- USED_SIZE[MB]:使用済みサイズ(MB)
- AUTOEXTENSIBLE:自動拡張の有無(YES/NO)
- NEXT_SIZE[MB]:自動拡張時に追加されるサイズ(MB)
- MAX_SIZE[MB]:自動拡張時の最大サイズ(MB)
- USED_PER:使用率(%)
データファイルのサイズと空き率を確認
データファイルごとに、現在サイズと空きサイズ、自動拡張設定、拡張サイズ、最大サイズ、空き率をまとめて確認するSELECT文です。
set pages 300
set lines 300
col tablespace_name for a50
col file_name for a80
col NOW_SIZE[MB] for 9999999999
col FREE_SIZE[MB] for 9999999999
col autoextensible for a3
col NEXT_SIZE[MB] for 9999999999
col MAX_SIZE[MB] for 9999999999
col FREE_PER for 999990.99
SELECT
df.tablespace_name,
df.file_name,
df.bytes/(1024*1024) as "NOW_SIZE[MB]",
NVL(fs.free_bytes,0)/(1024*1024) as "FREE_SIZE[MB]",
df.autoextensible,
(df.increment_by*(df.bytes/df.blocks))/(1024*1024) as "NEXT_SIZE[MB]",
df.maxbytes/(1024*1024) as "MAX_SIZE[MB]",
ROUND((NVL(fs.free_bytes,0)/(1024*1024))/(df.bytes/(1024*1024)) * 100,2) as "FREE_PER"
FROM
dba_data_files df
LEFT JOIN (
SELECT
file_id,
SUM(bytes) as free_bytes
FROM
dba_free_space
GROUP BY
file_id
) fs
ON
df.file_id = fs.file_id
ORDER BY
df.file_id
;出力されるカラムは以下のとおりです。
- TABLESPACE_NAME:表領域名
- FILE_NAME:データファイル名(物理パス)
- NOW_SIZE[MB]:データファイルの現在サイズ(MB)
- FREE_SIZE[MB]:空きサイズ(MB)
- AUTOEXTENSIBLE:自動拡張の有無(YES/NO)
- NEXT_SIZE[MB]:自動拡張時に追加されるサイズ(MB)
- MAX_SIZE[MB]:自動拡張時の最大サイズ(MB)
- FREE_PER:空き率(%)

