liguofeng29’s blog

個人勉強用ブログだっす。

Oracle - TABLESPACE

-- 表領域確認

set pages999

set lin200

select

d.tablespace_name,

TOTAL_SIZE "現サイズ[MB]",

round(TOTAL_SIZE-FREE_SIZE) "使用量[MB]",

round*1*100) "使用率(%)",

FREE_SIZE "空き容量[MB]"

from

(SELECT tablespace_name, round(SUM(bytes)/(1024*1024)) "TOTAL_SIZE"

FROM dba_data_files GROUP BY tablespace_name) d,

(SELECT tablespace_name, round(SUM(bytes)/(1024*1024)) "FREE_SIZE"

FROM dba_free_space GROUP BY tablespace_name) f

where d.tablespace_name=f.tablespace_name;

-- 表領域作成
CREATE TABLESPACE tablespace_name
DATAFILE '/~/oradata/<SID>/hoge_uniform01.dbf'
SIZE 123M AUTOEXTEND ON
NEXT 246M
MAXSIZE UNLIMITED
BLOCKSIZE 8K
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 3M または EXTENT MANAGEMENT LOCAL AUTOALLOCATE
-- ↑ ローカル管理 UNFORM で SIZE 句を省略した場合には 1M
SEGMENT SPACE MANAGEMENT AUTO ;
-- ↑ 自動セグメント領域管理
-- 表領域の管理方式の変換
-- ディクショナリ管理表領域からローカル管理表領域に変換したい場合には、DBMS_SPACE_ADMIN パッケージを使用する。
EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL('TABLE_SPACE_NAME');

-- エクステント、セグメント管理方法確認
SQL> select TABLESPACE_NAME, EXTENT_MANAGEMENT,SEGMENT_SPACE_MANAGEMENT FROM DBA_TABLESPACES;

*1:1 - (FREE_SIZE/TOTAL_SIZE