【Oracleの便利SQL】表領域とデータファイルのサイズと使用率、空き率を確認するSQL

  • URLをコピーしました!
Oracle AI Database
動作確認環境
  • 導入製品: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:空き率(%)

【Oracleの便利SQL】シリーズ記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Fラン卒・未経験からデータベースエンジニアに転身。
使用技術:Oracle製品
資格取得:情報処理安全確保支援士試験|応用情報技術者試験|OracleMaster Gold DBA|OCI Architect Associate

目次