Tihiroの頭を休めるIT教室

少しだけ頭使って後は根性

Oracleの表領域の使用率とデータファイルのサイズを確認するSELECT文(管理者用)

概要

Oracleの表領域の使用率とデータファイルの使用率を確認するSELECT文(管理者用)です。 管理者用なので管理者権限が必要です。 SELECT文を実行するには、DBA_xxxテーブルに対する参照権限が必要です。

環境は

です。

表領域の使用率を確認する

WITH
  total_free_space AS (
    SELECT
        tablespace_name
      , SUM(bytes) AS bytes
    FROM
      dba_free_space
    GROUP BY
      tablespace_name
    ORDER BY
      tablespace_name
  )
SELECT
    usage.tablespace_name AS "表領域名"
  , usage.tablespace_size * tblsp.block_size AS "表領域_最大"
  , usage.used_space * tblsp.block_size AS "表領域_使用済み"
  , free.bytes AS "表領域_空領域"
  , usage.used_percent AS "表領域_使用率"
FROM
  dba_tablespace_usage_metrics usage
    INNER JOIN dba_tablespaces tblsp
            ON usage.tablespace_name = tblsp.tablespace_name
    INNER JOIN total_free_space free
            ON usage.tablespace_name = free.tablespace_name
ORDER BY
   表領域名;

結果はバイト数なんで適当に1024で割ってください。

データファイルのサイズを確認する。

SELECT
    dbf.tablespace_name AS "表領域名"
  , dbf.file_name AS "データファイル名"
  , dbf.autoextensible AS "データファイル自動拡張"
  , dbf.bytes AS "データファイルbytes"
FROM
  dba_data_files dbf
ORDER BY
   表領域名
 , データファイル名;

データファイルごとの使用率ってのは不明でした。

まとめ

ディスク領域が枯渇しているとか、もうそんなトラブルは嫌なんです。っていう場合に定期的に監視しておいたほうが良い気がします。