【ORACLE】表領域を作成・変更・サイズ拡張・削除する方法
ここではORACLEデータベースで、表領域を作成・変更・サイズ拡張・削除するSQLを紹介しています。
表領域の一覧や使用率を確認する方法は↓で紹介しています。
>>【ORACLE】表領域の一覧や使用率を確認するSQL
表領域とは
表領域とは、テーブルやインデックスを格納する領域です。
表領域は1つ以上のデータファイルで出来ています。逆に1つのデータファイルが複数の表領域に紐づくことは出来ません。
表領域を作成するSQL
表領域の作成はCREATE TABLE文を使います。
表領域の名前は最大30バイトです。
表領域の作成や変更、削除には↓の権限が必要です。
作成:CREATE TABLESPACE
変更:ALTER TABLESPACE
削除:DROP TABLESPACE
システム権限の付与の方法については↓で紹介していますので参考にしてください。
>>【ORACLE】システム権限を付与・取消するSQL
CREATE TABLESPACE文の基本構文
CREATE TABLESPACE文の基本構文は次の通りです。
CREATE [BIGFILE | SMALLFILE] TABLESPACE 表領域名
[DATAFILE データファイル名 SIZE サイズ]
[AUTONEXTEND {OFF | ON [NEXT サイズ] [MAXSIZE サイズ]}]
[MINIMUM EXTENT サイズ]
[BLOCKSIZE サイズ]
[LOGGING | NOLOGGING]
[ONLINE | OFFLINE]
[PERMANENT | TEMPORARY]
;
・BIGFILE/SMALLFILE
BIGFILEかSMALLFILEが指定します。データベースのデフォルトと違う種類を指定するときに指定します。
・DATAFILE
データファイル名とサイズを指定します。
・AUTONEXTEND
データファイルの自動拡張を指定します。
OFF:自動拡張しない
ON:自動拡張する、NEXTで自動拡張するサイズ、MAXSIZEで拡張サイズの最大を指定できます。MAXSIZEでUNLIMITEDを指定すると制限なしにできます。
・MINIMUM EXTENT
エクステントの最小サイズを指定します。
・BLOCKSIZE
ブロックサイズを指定します。指定しない場合はデフォルトのブロックサイズが適用されます。
・LOGGING/NOLOGGING
表領域に対する操作をREDOログに出力するかどうか指定します。デフォルトはLOGGINGです。
・ONLINE/OFFLINE
ONLINEを指定することで表領域を使用可能にします。OFFLINEで使用禁止にします。デフォルトはONLINEです。
・PERMANENT/TEMPORARY
永続表領域にする場合はPERMANAENT、一時表領域にする場合はTEMPORARYを指定します。デフォルトはPERMANAENTです。
CREATE TABLESPACE文を使ったSQLサンプル
CREATE TABLESPACE文のサンプルです。
次のSQLでは、TBS1表領域をDF1.DBFで作成しています。自動拡張の設定で増分1M、最大サイズ無制限にしています。
CREATE TABLESPACE tbs1
DATAFILE 'c:\ORACLE\DATA\df1.dbf' SIZE 100M
AUTONEXTEND ON NEXT 1M MAXSIZE UNLIMITED
;
複数のデータファイルで表領域を作成するSQL
CREATE TABLESPACE tbs1 DATAFILE 'c:\ORACLE\DATA\dbf1.dbf' SIZE 100M,
'c:\ORACLE\DATA\dbf2.dbf' SIZE 100M,
'c:\ORACLE\DATA\dbf3.dbf' SIZE 100M;
BIGFILEで表領域を作成するSQL
CREATE BIGFILE TABLESPACE tbs1
DATAFILE 'c:\ORACLE\DATA\df1.dbf' SIZE 100M
AUTONEXTEND ON NEXT 1M MAXSIZE UNLIMITED
;
表領域を変更するSQL
ALTER文を使うことで、表領域を変更することが出来ます。
表領域の名前を変更するSQL
ALTER TABLESPACE tbs1 RENAME TO tbs2;
表領域を読取専用に変更するSQL
ALTER TABLESPACE tbs1 READ ONLY;
表領域をONLINE/OFFLINEに変更するSQL
ALTER TABLESPACE tbs1 ONLINE;
ALTER TABLESPACE tbs1 OFFLINE;
表領域にデータファイルを追加するSQL
ALTER TABLESPACE tbs1 ADD DATAFILE 'c:\ORACLE\DATA\df2.dbf' SIZE 100M;
サイズの拡張
表領域のサイズ拡張と縮小
ALTER TABLESPACE tbs1 DATAFILE 'c:\ORACLE\DATA\df1.dbf' SIZE 100M;
データファイルのサイズ拡張と縮小
--データファイルサイズの確認
select a.FILE_NAME,a.TABLESPACE_NAME,a.BYTES from DBA_DATA_FILES a;
--データファイルサイズの拡張・縮小
alter database datafile '/oracle/oradata/xxDB/data/user1.dbf' resize 100M;
表領域を削除するSQL
DROP文を使うことで表領域を削除することが出来ます。
DROP TABLESPACE 表領域名
[INCLUDING CONTENTS [AND DATAFILES] [CASCADE CONSTRAINTS]];
・INCLUDING CONTENTS
表領域内のオブジェクトも同時に削除します。
・AND DATAFILES
表領域と同時にデータファイルも削除します。
・CASCADE CONSTRAINTS
表領域と同時に参照整合性制約も同時に削除します。
DROP TABLESPACE文を使ったSQLサンプル
次のSQLでは、表領域の削除と同時に、オブジェクトとデータファイルを削除しています。
DROP TABLESPACE tbs1 INCLUDING CONTENTS AND DATAFILES;
まとめ
表領域の作成はCREATE TABLESPACE、変更はALTER文、削除はDROP文を使います。
表領域の作成や変更、削除には↓の権限が必要です。
作成:CREATE TABLESPACE
変更:ALTER TABLESPACE
削除:DROP TABLESPACE
システム権限の付与の方法については↓で紹介していますので参考にしてください。
>>【ORACLE】システム権限を付与・取消するSQL