CREATE TABLESPACE

CREATE TABLESPACE は表領域を作成する SQL 文である。表領域とは、表にデータを格納するための論理的な記憶領域である。データを永続的に保存するために、物理的なデータ・ファイルと関連付いている。

CREATE TABLESPACEの構文

CREATE [BIGFILE|SMALLFILE] TABLESPACE tablespace_name
  DATAFILE filespec [,filespec ...]
  [DEFAULT STORAGE INITIAL 初期サイズ
  NEXT 増加サイズ
  MINEXTENTS エスクテント最小数
  MAXEXTENTS エスクテント最大数
  PCTINCREASE エスクテント増加率 ]
  [ ENCRYPTION algorrithm ]
BIGFILE

BIGFILE表領域を作成する。BIGFILE表領域はひとつのデータファイル又は一時ファイルのみであり、このファイルには最大約40億(232)ブロックを格納できる。

SMALLFILE

SMALLFILE表領域を作成する。SMALLFILE表領には1022のデータファイル又は一時ファイルを含めることができ、それぞれのファイルに最大で約400万(222)のブロックを格納することができる。

tablespace_name

作成する表領域の名前を指定する。

DATAFILE
表領域を構成するデータベースファイルの詳細を指定する。SMALLFILE節を指定した場合は、ひとつの表領域に対して複数のデータベースファイルを指定することができる。各データベースファイルの詳細を表すfilespecは次の構文で指定する。
path [SIZE filesize] [REUSE] [AUTOEXTEND ON [NEXT extendsize [MAXSIZE maxsize]]]
path
データベースファイルのパスを指定する。
SIZE
データベースファイルのサイズをバイト数で指定する。単位としてK(キロ)、M(メガ)、G(ギガ)、T(テラ)、P(ペタ)又はE(エクサ)を指定することもできる。

表領域とデータベースファイルを新規作成する例を以下に示す。

SQL> CREATE TABLESPACE tbs1 DATAFILE '/oradata/foo/tbs1.dbf' SIZE 50M;
REUSE
既存のデータベースファイルを再利用して表領域を作成する。SIZE節も指定した場合は、既存のデータベースファイルのサイズを変更して再利用する。既存のデータベースファイルのサイズを変更せずに再利用する場合は、SIZE節を指定しない。

既存のデータベースファイルを再利用して表領域を作成する例を以下に示す。

SQL> CREATE TABLESPACE tbs1 DATAFILE '/oradata/foo/tbs1.dbf' REUSE;
AUTOEXTEND ON

自動拡張を有効にする。

NEXT

エクステントがさらに必要になった場合に、データベースファイルに自動的に割り当てられるディスク領域の増分サイズをバイト単位で指定する。

MAXSIZE

データベースファイルの自動拡張で使用されるディスク領域の最大サイズを指定する。

DEFAULT STORAGE

表領域内に作成されるすべてのオブジェクトに対するデフォルトの記憶域パラメータを指定する。

INITIAL

オブジェクトの第1エクステントのサイズをバイト数で指定する。単位としてK(キロ)、M(メガ)、G(ギガ)、T(テラ)、P(ペタ)又はE(エクサ)を指定することもできる。

NEXT

オブジェクトに割り当てる次のエクステントのサイズをバイト数で指定する。単位としてK(キロ)、M(メガ)、G(ギガ)、T(テラ)、P(ペタ)又はE(エクサ)を指定することもできる。

ENCRYPTION algorrithm
表領域の暗号化プロパティを指定する。
SQL> CREATE TABLESPACE example_ts
  2  DATAFILE '$ORACLE_HOME/dbs/example_ts.dbf' SIZE 1M
  3  ENCRYPTION USING 'AES256'
  4  DEFAULT STORAGE (ENCRYPT);

必要な権限

表領域を作成するには、CREATE TABLESPACE システム権限が必要である。

SYSAUX表領域を作成する場合は、SYSDBAシステム権限が必要である。

関連SQL