Oracleでテーブルが属する表領域の確認や表領域の変更方法、また表領域の使用率の確認

Oracleでテーブルが属する表領域の確認や表領域の変更方法、また表領域の使用率の確認

Oracleでテーブルがどの表領域に属しているかを以下SQLで確認します。

select table_name,tablespace_name from user_tables
order by tablespace_name;

結果は以下のようになりました。

TABLE_NAME TABLESPACE_NAME
SAMPLE_TABLE SYSTEM

SAMPLE_TABLEがSYSTEM表領域に属していることがわかります。

これを別の表領域に変更するにはALTER TABLEを使用します。

ALTER TABLE SAMPLE_TABLE MOVE TABLESPACE SAMPLE_SPACE;

SAMPLE_SPACEは別の表領域です。

再度、検索します。

select table_name,tablespace_name from user_tables
order by tablespace_name;

結果は以下のようになりました。

TABLE_NAME TABLESPACE_NAME
SAMPLE_TABLE SAMPLE_SPACE

ちなみにdba_tablesからも表領域は確認できます。

select table_name,tablespace_name
from dba_tables
where owner = 'USER002';

OWNERを指定しないとSYSが所有するテーブルなども表示されるのでOWNERで条件を絞った方が良いです。

表領域の使用率の確認

表領域の使用率を確認するには、以下SQLを発行します。

select
tablespace_name,
to_char(nvl(total_bytes / 1024 / 1024,0),'999,999,999') as "size(MB)",
to_char(nvl((total_bytes - free_total_bytes) / 1024 / 1024,0),'999,999,999') as "used(MB)",
to_char(nvl(free_total_bytes/1024 / 1024,0),'999,999,999') as "free(MB)",
round(nvl((total_bytes - free_total_bytes) / total_bytes * 100,100),2) as "rate(%)"
from
( select
tablespace_name,
sum(bytes) total_bytes
from
dba_data_files
group by
tablespace_name
),
( select
tablespace_name free_tablespace_name,
sum(bytes) free_total_bytes
from
dba_free_space
group by tablespace_name
)
where
tablespace_name = free_tablespace_name(+)

参考サイト:Oracle使いのネタ帳

実行結果は以下のようになりました。

TABLESPACE_NAME SIZE(MB) USED(MB) FREE(MB) USED(%)
--------------- -------- -------- -------- -------
SYSTEM               360      354        6   98.32
SYSAUX               670      632       38   94.37
UNDOTBS1              25        9       16   36.75
USERS                100        7       94     6.5
SAMPLE_SPACE          10        1        9   10.63

ちょっと気になったので表領域SAMPLE_SPACEに属するテーブルにレコードを10万件くらいインサートしてみました。

すると、「ORA-01653: 表USER002.SAMPLE_TABLEを拡張できません(128分、表領域SAMPLE\SPACE)。」と表示されました。

このエラーを解決するには、データファイルのリサイズなどが考えられます。具体的な対策方法は、ORA-01653: 表スキーマ名.テーブル名を拡張できません(XXX分、表領域XXX)。を参照ください。

コメント

タイトルとURLをコピーしました