ALTER TABLESPACE

ALTER TABLESPACEは、既存の表領域(テーブルスペース)を変更するSQL文である。

表領域の名前を変更する

既存の表領域の名前を変更するには、ALTER TABLE文にRENAME TO句を指定する。

ALTER TABLESPACE oldname RENAME TO newname
oldname
名前を変更する表領域
newname
表領域の新しい名前

表領域にデータファイルを追加する

既存の表領域にデータファイルを追加するには、ALTER TABLE文にADD DATAFILE句を指定する。

ALTER TABLESPACE name
  ADD DATAFILE filename
  SIZE initialsize
  AUTOEXTEND [ON|OFF]
  NEXT nextsize
  MAXSIZE maxsize
name
データファイルを追加する表領域
filename
追加するデータファイルのファイル名

データファイルを追加する例を示す。

ALTER TABLESPACE USERS ADD DATAFILE '/u01/app/oracle/oradata/orcl/users02.dbf' SIZE 10M

表領域のデータファイルを削除する

表領域のデータファイルを削除するには、ALTER TABLE文にDROP DATAFILE句を指定する。

ALTER TABLESPACE name DROP DATAFILE filename
name
データファイルを削除する表領域
filename
削除するデータファイルのファイル名

データファイルを削除する例を示す。

ALTER TABLESPACE tblspc01 DROP DATAFILE 'tblspc01.dbf'

表領域の自動拡張を使用可能にする

BIGFILE表領域内のデータファイルに対して、自動拡張を使用可能にする。

ALTER TABLESPACE example AUTOEXTEND ON

自動拡張の増分は、1データブロックのサイズとなる。

自動拡張のサイズを指定する

自動拡張の増分サイズをNEXT句で具体的に指定することもできる。エクステントがさらに必要になった場合、データファイルに自動的に割り当てられるディスク領域のサイズをバイト数で指定する。

単位としてK(キロ)、M(メガ)、G(ギガ)、T(テラ)、P(ペタ)又はE(エクサ)を指定することもできる。

ALTER TABLESPACE example AUTOEXTEND ON NEXT 10M

自動拡張の最大サイズを指定する

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

ALTER TABLESPACE example AUTOEXTEND ON NEXT 10M MAXSIZE 50M

データファイルの自動拡張で使用されるディスク領域の最大サイズをバイト数で指定する。単位としてK(キロ)、M(メガ)、G(ギガ)、T(テラ)、P(ペタ)又はE(エクサ)を指定することもできる。

自動拡張の最大サイズを無制限にする

データファイルに割り当てられるディスク領域のサイズを制限しない。

ALTER TABLESPACE example AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED

表領域の自動拡張を使用不可能にする

BIGFILE表領域内のデータファイルに対して、自動拡張を使用不可能にする。

ALTER TABLESPACE example AUTOEXTEND OFF

SHRINK SPACE

一時表領域に使用される領域の大きさを縮小する。一時表領域の大きさは、表領域の他の記憶域属性を満たしていることを条件として可能なかぎり縮小される。一時表領域以外の表領域に対しては、SHRINK SPACE 句を指定できない。

ALTER TABLESPACE tablespace SHIRINK SPACE [KEEP size]
tablespace
表領域の名前
size
表領域の縮小後サイズの下限

一時表領域に使用される領域のサイズを縮小する例を以下に示す。

SQL> ALTER TABLESPACE TEMP SHIRINK SPACE;

必要な権限

表領域を変更するには、ALTER TABLESPACE システム権限が必要である。

bigfile表領域のサイズ変更

bigfile表領域のサイズを変更するには、ALTER TABLESPACE 文を使う。

SQL> ALTER TABLESPACE test1 RESIZE 10G;

※smallsize表領域のサイズを変更するには、ALTER DATABASE 文を使う。

表領域が bigfile か smallfile かを確認するには、DBA_TABLESPACES データ・ディクショナリ・ビューを問い合わせる。

SQL> SELECT bigfile FROM DBA_TABLESPACES WHERE TABLESPACE_NAME = 'test1';