この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:2
更新日時:2026-06-10 16:39:53
タイトル: 表領域
Oracleの表領域の記事です。表領域(Tablespace)はOracleの論理ストレージ単位で、テーブル・インデックス等のデータベースオブジェクトを格納する場所を抽象化したものです。物理的には1つ以上のデータファイルに対応します。
表領域の役割
- テーブル・インデックスをどのファイルに格納するかを管理
- 容量管理・拡張ポリシーを表領域単位で設定
- バックアップ・リカバリの単位
- I/O負荷分散のため、用途別に表領域を分けて配置することも
論理構造と物理構造の対応
| 論理 | 物理 |
| データベース | 1つのOracleインスタンス |
| 表領域(Tablespace) | 1つ以上のデータファイル(.dbf) |
| セグメント | 表・索引・LOB等のオブジェクト |
| エクステント | 連続したデータブロックの集まり |
| データブロック | I/Oの最小単位(既定8KB等) |
主要な表領域(標準で作られるもの)
| 表領域 | 役割 |
| SYSTEM | データディクショナリ(システム情報) |
| SYSAUX | AWR・補助システム情報 |
| USERS | ユーザーデータの既定 |
| TEMP | ソート・一時セグメント用 |
| UNDOTBS1 | UNDOデータ(ROLLBACKや読み取り一貫性に使う) |
表領域の作成例
|
CREATE TABLESPACE app_data
DATAFILE '/u01/oradata/orcl/app_data01.dbf' SIZE 1G
AUTOEXTEND ON NEXT 100M MAXSIZE 10G
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
|
表領域とオブジェクトの関連付け
|
-- テーブルを指定の表領域に作成
CREATE TABLE users (
id NUMBER PRIMARY KEY,
name VARCHAR2(100)
) TABLESPACE app_data;
-- ユーザーの既定表領域を変更
ALTER USER scott DEFAULT TABLESPACE app_data;
|
状態確認のコマンド
|
-- 表領域一覧
SELECT tablespace_name, status, contents
FROM dba_tablespaces;
-- 使用量
SELECT tablespace_name,
ROUND(SUM(bytes)/1024/1024) AS used_mb
FROM dba_segments
GROUP BY tablespace_name;
-- データファイル
SELECT file_name, tablespace_name, bytes/1024/1024 AS size_mb
FROM dba_data_files;
|
表領域の種類
| 種類 | 用途 |
| 永続表領域 (PERMANENT) | 通常のテーブル・索引用 |
| 一時表領域 (TEMPORARY) | ソート・GROUP BY・ハッシュ結合等の中間データ |
| UNDO表領域 | UNDO情報の管理 |
| BIGFILE表領域 | 1ファイルで大容量(最大128TB) |
| 暗号化表領域 (TDE) | 透過的データ暗号化 |
運用での注意点
- 容量監視:
dba_data_files+dba_free_spaceで空き容量を定期確認
- AUTOEXTEND: 自動拡張オプションを使うかは方針次第。MAXSIZEを必ず設定
- システム表領域に業務データを置かない: USERS や専用表領域へ
- BIGFILEはバックアップが大ファイルになるので運用設計に注意
- 表領域名は大文字で扱われる(クオートしない限り)
関連