SQL DDL:表領域

表領域とは?

=テーブルスペース
スキーマオブジェクトやディスクソートに使用するための一時的な領域を格納するためのストレージ領域
基本は表を表領域に所属させると、データファイルが特定の表領域に保存される。
(場合によっては論理的に複数の表領域に所属させたりできる)
・表領域単位でのアクセス制限
・表領域単位でのバックアップ/リカバリ
・表領域単位で保存ディスクを分ける事でのI/O速度向上
CREATE TABLESPACE ~ で作成し、容量を指定するので、
データベースのデータ蓄積に伴いHDがパンクする事は無い。

SYSTEM表領域

・ディクショナリ
・ストアドプロシージャ
・SYSTEMロールバックセグメント
データベース作成時に自動的に作成される
この領域にユーザオブジェクトを作成しない

ユーザ表領域

テーブル等のスキーマオブジェクトを作成
表、索引、順序、ビュー毎に表領域を作成する事をOracleは推奨している

ロールバック表領域

トランザクションデータを一時的に保持する領域

一時表領域

DISTINCT句、GROUP BY句、ORDER BY句を含むSQL実行時に利用される領域

定義方法

作成

CREATE TABLESPACE (表領域名)
 DATAFILE (データファイル名.dbf) SIZE 100M;
表領域を作成(オプション)
CREATE TABLESPACE (表領域名)
 DATAFILE (データファイル名.dbf) SIZE 100M;
 AUTOEXTEND ON NEXT 500K MAXSIZE 1024M;
 自動拡張500Kで最大1024M
 AUTOEXTEND ON NEXT 500K MAXSIZE UNLIMITED
 自動拡張500Kで最大サイズ無制限
 AUTOEXTEND OFF NEXT 500K MAXSIZE 1024M;
 自動拡張無しで最大1024M
 BLOCKSIZE ブロックサイズ
複数のデータファイルにまたがった表領域を作成
CREATE TABLESPACE (表領域名)
 DATAFILE (データファイル名1.dbf) SIZE 100M;
 DATAFILE (データファイル名2.dbf) SIZE 100M;
 AUTOEXTEND ON NEXT 500K MAXSIZE 1024M;

拡張

ALTER TABLESPACE (表領域名)
ADD DATAFILE '~/(データファイル名).dbf' SIZE 100M;
ALTER DATABASE DATAFILE '~/(データファイル名).dbf ';
RESIZE 150M
AUTOEXTEND ON ※自動拡張
NEXT 10M
MAXSIZE UNLIMITED;

削除

DROP TABLESPACE 表領域名;
(表領域にオブジェクトがある場合はエラー)
DROP TABLESPACE 表領域名 INCLUDING CONTENTS AND DATAFILES;
(表領域にオブジェクトがある場合も可。データファイルも同時削除)
EMにおける表領域削除時の挙動と同じ

移動

ALTER TABLESPACE 旧表領域名 RENAME TO 新表領域名;

表作成時の表領域指定

SQL DDL:テーブル定義」参照