#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(参考になった[628],参考にならなかった[60])