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:テーブル定義」参照