ORACLE/TABLESPACE編

オラクルちょこっとリファレンス

HOME > TABLESPACE編

TABLESPACE(表領域)

表領域とはオブジェクト(表・ビュー・索引など)を格納するひとまとまりの領域のことです。表領域は物理的なファイルと対応しており、「1表領域=1つ以上のデータファイル」となってます。 しかし、1データファイルが複数の表領域を格納することはありません。

表領域の作成

表領域の作成には、CREATE TABLESPACE句を使用します。

CREATE TABLESPACE構文
CREATE TABLESPACE <表領域名>
  [DATAFILE データファイル名 [SIZE ファイルサイズ]]
    [AUTOEXTEND {OFF | ON NEXT サイズ [MAXSIZE {UNLIMITED | サイズ}]}]
  [MINIMUM EXTENT エクステントサイズ]
  [BLOCKSIZE ブロックサイズ]
  [LOGGING | NOLOGGING]
  [ONLINE | OFFLINE]
  [PERMANENT | TEMPORARY]
  [SEGMENT SPACE MANAGEMENT [MANUAL | AUTO]]
;
パラメータ 説明
DATAFILE 表領域を構成するデータファイルを指定する。SIZEでデータファイルのサイズも指定できる。
 AUTOEXTEND 表領域物理ファイルのサイズ拡張を指定する
OFF:自動拡張しない
ON:自動拡張する(NEXTで拡張時の増分サイズを指定、MAXSIZEで拡張上限サイズを指定する)
MINIMUM EXTENT 最小エクステントサイズを指定
BLOCKSIZE 表領域のブロックサイズを指定
LOGGING | NOLOGGING LOGGING:表領域に対する変更をREDOログに出力する
NOLOGGING:表領域に対する変更をREDOログに出力しない
ONLINE | OFFLINE ONLINE:表領域を使用可にする
OFFLINE:表領域を使用不可にする
PERMANENT | TEMPORARY PERMANENT:普通の表領域(デフォルト)
TEMPORARY:一時表領域
SEGMENT SPACE MANAGEMENT セグメントの管理方法を指定する

※→オラクルの仕組編の一番下に、ブロック/エクステント/セグメントの簡単な説明があります。

表領域の作成例文
--(例)表領域(USER01)をファイル名「USER01.dbf」、100MBのサイズで作成する CREATE TABLESPACE USER01 DATAFILE 'D:\ORACLE\DATA\USER01.dbf' SIZE 100M SEGMENT SPACE MANAGEMENT AUTO ;

CREATE TABLESPACEの実行には「CREATE TABLESPACE」システム権限が必要です。

表領域の書き込み可/不可の変更

表領域の書き込み可/不可の変更には ALTER TABLESPACE句を使用します。

ALTER TABLESPACE構文 (表領域の書き込み可/不可)
ALTER TABLESPACE <表領域名>
  READ {ONLY | WRITE}
;
表領域を書き込み不可にする例文
--(例)表領域(表領域名:test_tbs)を書き込み不可にする。 ALTER TABLESPACE test_tbs READ ONLY ;

表領域のONLINE/OFFLINE

表領域のONLINE/OFFLINEには ALTER TABLESPACE句を使用します。

ALTER TABLESPACE構文 (表領域のONLINE/OFFLINE)
ALTER TABLESPACE <表領域名>
  {ONLINE | OFFLINE}
;
表領域をOFFLINEにする例文
--(例)表領域(表領域名:test_tbs)をOFFLINEにする。 ALTER TABLESPACE test_tbs OFFLINE ;

表領域の削除

表領域の削除には DROP TABLESPACE句を使用します。

DROP TABLESPACE構文
DROP TABLESPACE <表領域名>
  [INCLUDING CONTENTS
    [AND DATAFILES]
    [CASCADE CONSTRAINTS]
  ]
;
パラメータ 説明
INCLUDING CONTENTS 削除しようとする表領域にオブジェクトが存在する時に指定する
AND DATAFILES 表領域の物理ファイルも削除する時に指定する
CASCADE CONSTRAINTS 削除しようとする表領域を参照している制約を、一緒に削除する時に指定する。
表領域の削除例文
--(例)表領域(表領域名:test_tbs)を削除する。 DROP TABLESPACE test_tbs INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS ;

表領域名の変更(Oracle10gから)

表領域名の変更には ALTER TABLESPACE句を使用します。
(表領域名の変更はOracle10gから可能です。)

ALTER TABLESPACE構文(表領域名の変更)
ALTER TABLESPACE <現表領域名> RENAME TO <新表領域名>;

表領域名の変更例文
--(例)表領域名を、test_tbs → test_tbs_new に変更する。 ALTER TABLESPACE test_tbs RENAME TO test_tbs_new ;

SYSTEM表領域、SYSAUX表領域の名称は変更できません。

表領域の情報を表示する

表領域の情報を表示するには DBA_TABLESPACESデータディクショナリビューを検索します。

表領域の情報を表示する
SELECT * FROM DBA_TABLESPACES;

DBA_TABLESPACESの他に、USER_TABLESPACESがあります。
 違いは参照できる範囲が異なります。

【DBA_TABLESPACESの主要カラム】
カラム内容
TABLESPACE_NAME表領域名
BLOCK_SIZEブロックサイズ(バイト)
INITIAL_EXTENT初期エクステントサイズ(バイト)
NEXT_EXTENT増分エクステントサイズ(バイト)
MIN_EXTENTSエクステントの最小数
MAX_EXTENTSエクステントの最大数
MAX_SIZEセグメントの最大サイズ(ブロック数)
PCT_INCREASEエクステントの増加割合
MIN_EXTLEN最小エクステントサイズ(バイト)
STATUS表領域のステータス
(ONLINE/OFFLINE/READ ONLY)
CONTENTS表領域の種類
(UNDO/PERMANENT/TEMPORARY)
LOGGINGロギング属性
(LOGGING/NOLOGGING)
FORCE_LOGGING強制ロギングモードかどうか
(Y/N)
EXTENT_MANAGEMENTエクステントの種類
(DICTIONARY/LOCAL)
ALLOCATION_TYPEエクステントの割り当てタイプ
(SYSTEM/UNIFORM/USER)
PLUGGED_INプラグインかどうか
(YES/NO)
SEGMENT_SPACE_MANAGEMENTセグメントの空き領域の管理方法
(MANUAL/AUTO)
DEF_TAB_COMPRESSION表圧縮の使用可否
(ENABLED/DISABLED)
RETENTIONUNDO表領域の保存
(GUARANTEE/NOGUARANTEE/NOT APPLY)
BIGFILE表領域がBIGFILEかSMALLFILEかどうか
(YES:BIGFILE表領域 NO:SMALLFILE表領域)
PREDICATE_EVALUATION述語の評価方式
 HOST:ホストによる評価
 STORAGE:記憶域による評価
ENCRYPTED表領域が暗号化されているかどうか
(YES/NO)
COMPRESS_FOR圧縮操作の種類
(BASIC/OLTP/QUERY LOW/QUERY HIGH/ARCHIVE LOW/ARCHIVE HIGH/NULL)
ToTop