1.

表領域

編集

Oracleの表領域の記事です。表領域(Tablespace)はOracleの論理ストレージ単位で、テーブル・インデックス等のデータベースオブジェクトを格納する場所を抽象化したものです。物理的には1つ以上のデータファイルに対応します。

表領域の役割

  • テーブル・インデックスをどのファイルに格納するかを管理
  • 容量管理・拡張ポリシーを表領域単位で設定
  • バックアップ・リカバリの単位
  • I/O負荷分散のため、用途別に表領域を分けて配置することも

論理構造と物理構造の対応

論理物理
データベース1つのOracleインスタンス
表領域(Tablespace)1つ以上のデータファイル(.dbf)
セグメント表・索引・LOB等のオブジェクト
エクステント連続したデータブロックの集まり
データブロックI/Oの最小単位(既定8KB等)

主要な表領域(標準で作られるもの)

表領域役割
SYSTEMデータディクショナリ(システム情報)
SYSAUXAWR・補助システム情報
USERSユーザーデータの既定
TEMPソート・一時セグメント用
UNDOTBS1UNDOデータ(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はバックアップが大ファイルになるので運用設計に注意
  • 表領域名は大文字で扱われる(クオートしない限り)

関連

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. 表領域
  2. セグメント
  3. エクステント
  4. データブロック