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があります。
違いは参照できる範囲が異なります。
カラム | 内容 |
---|---|
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) |
RETENTION | UNDO表領域の保存 (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) |