#navi(ORACLE)

#contents

**表領域の記憶領域パラメータを表示 [#qe5379e2]

 SELECT tablespace_name, initial_extent "INITIAL", next_extent "NEXT",
 min_extents, max_extents, pct_increase, status
 FROM dba_tablespaces;

**表領域のサイズと使用量 [#y9ba77ac]

***改良版 [#ba3e8e7a]
 select 
	d.tablespace_name, 
	現サイズ "現サイズ[MB]", 
	round(現サイズ-空き容量) "使用量[MB]",
	round((1 - (空き容量/現サイズ))*100) "使用率(%)",
	空き容量 "空き容量[MB]"
 from
 (SELECT tablespace_name, round(SUM(bytes)/(1024*1024)) "現サイズ"
 FROM dba_data_files GROUP BY tablespace_name) d,
 (SELECT tablespace_name, round(SUM(bytes)/(1024*1024)) "空き容量"
 FROM dba_free_space GROUP BY tablespace_name) f
 where d.tablespace_name=f.tablespace_name
 /
***出力サンプル [#jbc9dae6]

 TABLESPACE_NAME                現サイズ[MB] 使用量[MB]  使用率(%) 空き容量[MB]
 ------------------------------ ------------ ---------- ---------- ------------
 INDX01                                    2          0          0            2
 PERF                                   1024         92          9          932
 SYSTEM                                  255        205         80           50
 TOOL01                                  100          0          0          100
 UNDO01                                15240        102          1        15138
 USER01                                    2          0          0            2

***旧版 [#x4048cf1]
 select a.TABLESPACE_NAME,
 min(a.BYTES)/1024/1024 "現サイズ(MB)", 
 round(min(a.BYTES)/(1024*1024) - sum(b.BYTES)/
 (1024*1024),2) "使用量(MB)", 
 round((min(a.BYTES)/(1024*1024) - sum(b.BYTES)/(1024*1024))/
 (min(a.BYTES)/1024/1024)*100,2) "使用率(%)",
 round(sum(b.BYTES)/(1024*1024),2) "空き容量(MB)"
 from dba_data_files a, dba_free_space b
 where a.FILE_ID = b.FILE_ID
 group by a.TABLESPACE_NAME;

**表領域のサイズ [#ubf2eb1c]

 SELECT tablespace_name, SUM(bytes)/(1024*1024) "SIZE[M]"
 FROM dba_data_files GROUP BY tablespace_name;

**表領域の空きサイズ [#id10b6d0]

 SELECT tablespace_name, trunc(SUM(bytes)/(1024*1024)) "Free[M]" 
 FROM dba_free_space GROUP BY tablespace_name;

**テーブルが格納されているテーブルスペースを表示 [#l807263f]

 select  TABLE_NAME, TABLESPACE_NAME from user_tables
 order by TABLESPACE_NAME
 /

**テーブルが格納されているテーブルスペースを変更 [#r4a6598a]

 alter table MY_TABLE
 move tablespace MOVE_TO_TABLESPACE
 /

**インデックスが格納されているテーブルスペースを変更 [#e63efeaf]

 alter index MY_INDEX
 rebuild tablespace MOVE_TO_TABLESPACE
 /

**データファイルのサイズ [#t366eab8]

 SELECT b.tablespace_name, a.file_name, a.bytes/(1024*1024) "SIZE[M]",
 a.autoextensible, a.increment_by/(1024*1024) "INC[M]",
 a.maxbytes/(1024*1024) "MAXSIZE[M]"
 FROM dba_data_files a, dba_tablespaces b
 WHERE a.tablespace_name=b.tablespace_name
 ORDER BY 1, 2;

**テーブルスペースの作成 [#nd14d769]

 create tablespace TABLESPACE_NAME add 
 datafile '/oracle_path/TABLESPACE_NAMExxx.dbf' 
 size 1024M;

**テーブルスペースの拡張 (1) ファイルの追加 [#t397e22f]

 alter tablespace TABLESPACE_NAME add 
 datafile '/oracle_path/TABLESPACE_NAMExxx.dbf' 
 size 1024M;

**テーブルスペースの拡張 (2) ファイルの拡張 [#h92fd149]

 alter tablespace TABLESPACE_NAME 
 datafile '/oracle_path/TABLESPACE_NAMExxx.dbf'
 resize 2048M;

**テーブルスペースの削除 [#l5409e0f]

 drop tablespace TABLESPACE_NAME;

その後 dbf ファイルを OS のコマンドで削除する。

※ とあるテーブルスペース削除のサンプルで、drop tablespace TBS_GO_TO_HELL; というの見つけ「あぁ捏造などで東京放送の TBS に怒りを持っているのか」と思った。(実際は TableSpace を略して TBS にしているだけ。)

**テーブルスペースの削除(データがあっても強制削除) [#s93e9abb]

 drop tablespace TABLESPACE_NAME INCLUDING CONTENTS;

その後 dbf ファイルを OS のコマンドで削除する。

**実際にテーブルが占有しているディスク領域 [#lb598f73]

 set line 5000
 set pagesize 10000
 col tablespace_name format a15
 col SEGMENT_NAME format a30
 
 select 
   TABLESPACE_NAME, 
   SEGMENT_NAME, 
   sum(BYTES/1024) AS SIZE_KB
 from DBA_EXTENTS
 where TABLESPACE_NAME = 'USERS'
 group by TABLESPACE_NAME, SEGMENT_NAME
 /

**表領域を構成しているエクステント数の確認 [#ke62fa7a]

 SELECT SEGMENT_NAME, SEGMENT_TYPE, TABLESPACE_NAME, EXTENTS
 FROM DBA_SEGMENTS
 WHERE TABLESPACE_NAME = 'MY_TABLE_SPACE';

これが大きくなると性能に悪影響を与える。

**表領域の断片化調査 [#z66f8757]

 SELECT TABLESPACE_NAME, FILE_ID, BYTES, BLOCKS FROM DBA_FREE_SPACE
 WHERE TABLESPACE_NAME = 'MY_TABLE_SPACE'
 ORDER BY BLOCK_ID;

**連続している空き領域の結合 [#u29434e9]
 ALTER TABLESPACE my_table_space COALESCE;

**アンケート [#w59572b7]
#vote(参考になった[691],参考にならなかった[70])
#vote(参考になった[692],参考にならなかった[70])

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS