@WIKI

表領域

最終更新:

atyou

- view
管理者のみ編集可

 Oracleデータベースで管理されるデータ(表データ、索引データなど)は、実際にはデータファイル内に格納されます。
ただし、データファイルと表や索引が対応付けられているのではありません。
データファイルは、表や索引を格納した表領域と対応付けられています
1つの表領域は、複数のデータファイルで構成できます。

表領域に格納される表や索引といったオブジェクトは
「セグメント」
と呼ばれます。セグメントは1つの表領域に格納されますが、表領域に対応付けられている複数のデータファイルにまたがることができます。

Oracleデータベースでは、データファイル内の領域割り当ての単位を
「エクステント」
と呼びます。セグメントの領域拡張(追加領域割り当て)にも対応します。
エクステントは「データブロック」で構成され、実際のレコードはデータブロックに格納されています。



エクステントの割り当て管理方法によって、表領域は2種類に分けられます。

ディクショナリ管理表領域 エクステントの管理は、データディクショナリによって行われます。
エクステントの割り当て/解除が行われるとデータディクショナリが更新されるため、
内部的なSQL(再帰的SQL)の発行が多くなります。
ローカル管理表領域 エクステントの管理は、データファイルのヘッダに格納されるビットマップという領域で行われます。
ビットマップは、エクステントの割り当て/解除が行われると変化するようになっています。
ディクショナリ管理表領域と異なり、ディクショナリアクセスがいらないため、
内部的なSQL(再帰的SQL)は不要です。

デフォルトの表領域はローカル管理表領域です。
SYSTEM表領域がディクショナリ管理表領域として作成された場合に限り、ディクショナリ管理を使用することができます。

ローカル管理表領域の場合、さらにセグメント内の空き領域管理方法として次の2種類があります。

手動セグメント領域管理 セグメント内の空き領域管理に空きリストを使用する方法です。
空きリストは、行が挿入されるデータブロックの決定のために使用されるリストです。
空きリストの数は、セグメント属性FREELISTSとFREELIST GROUPSで決定されます。
データブロック内の使用済み領域がセグメント属性PCTUSEDを下回ると、空きリストに登録されます。
自動セグメント領域管理 セグメント内の空き領域管理にセグメント内のビットマップブロックを使用する方法です。
行の挿入時や削除時にメンテナンスされるため、空きリストを使用しません。
従って、セグメント属性FREELISTS、FREELIST GROUPS、PCTUSEDは設定できません
(設定しても無視されます)。

Oracle Database 10g Release1までは手動セグメント領域管理がデフォルトですが、
Oracle Database 10g Release 2より、自動セグメント領域管理がデフォルトになります。

■表領域の変更

既存の表領域に対して、さまざまな変更を行うことができます。次のような特徴を覚えておきましょう。

<ステータス>
READ WRITE(読み込みと書き込みが可能)、READ ONLY(読み込みのみ可能)、OFFLINEの3つがあります。
READ ONLYは、SYSTEM表領域とSYSAUX表領域に対して指定することはできません。
表領域をOFFLINEにする際、IMMEDIATE(即時)オプションを使用すると、次回ONLINEに戻すときにリカバリが必要になります。

<サイズ変更>
表領域のサイズを大きくする方法として、表領域にデータファイルを追加する方法と、既存のデータファイルサイズを大きくする方法の2つがあります。
既存のデータファイルを大きくする方法には、手動と自動(AUTOEXTEND ON)があります。
既存のデータファイルを小さくすることも可能ですが、使用されているサイズよりも小さくすることはできません。

■表領域の削除

表領域を削除する場合、その表領域に格納されているセグメントも同時に削除する必要があります。
デフォルトでは空の表領域のみ削除することができます。次のようなオプションを使用することで、この動作を変更できます。

INCLUDING CONTENTS句 表領域に格納されているセグメントも同時に削除します。
NCLUDING CONTENTS AND DATAFILES句 表領域に格納されているセグメントと、
表領域に対応付けられているデータファイルも同時に削除します。

SQL> DROP TABLESPACE tbs01 INCLUDING CONTENTS;


Database Configuration Assistant(DBCA)を使用して作成されたデータベースでは、次の表領域が作成されます。

表領域名 説明
SYSTEM データディクショナリや管理データなどを格納する
SYSAUX SYSTEM表領域の補助表領域。関連ツールのリポジトリとして使用される
TEMP 一時データ(セッション中に使用するメモリ上でソートしきれないときのソートデータなど)が格納される
UNDOTBS1 UNDOデータ(変更前のデータのコピー)を格納する
USERS 非システムユーザーが作成するセグメントを格納する。表や索引を作成するときに表領域が指定されないと、デフォルトでこの表領域が使用されるように構成されている
EXAMPLE サンプルをインストールした場合に作成される。HR(人事)データやOE(注文)データなどが格納される

オブジェクトを格納する理論的な領域
Oralceでは、最低ひとつの表領域(SYSYTEM)を必要とする。
表領域は、SYSTEMとそれ以外の2つに大別できる。
SYSYTEMには、一般ユーザのデータは格納しない。

表領域のサイズは、対応付けられたデータファイルのサイズの合計です。表領域のサイズを拡大させるには、次の3つの方法が使用できます。

  • 新規にデータファイルを追加する
   ALTER TABLESPACE data1
   ADD DATAFILE ‘/HOME/ORADATA/u03/data01.dbf’
   SIZE 200M;

  • 既存のデータファイルサイズを変更する
   ALTER DATABASE DATAFILE
   ‘/HOME/ORADATA/u03/data01.dbf’
   RESIZE 200M;

  • データファイルサイズが不足したときに自動拡張できるように設定する
   ALTER DATABASE DATAFILE
   /HOME/ORADATA/u03/data01.dbf’
   AUTOEXTEND ON NEXT 10M MAXSIZE 500M;

 表領域の作成や削除、変更などは、
Database Controlの「管理」タブ→「記憶域」リージョンの「表領域」から行えます。
このページに表示される内容を確認しておきましょう。

※CREATE TABLESPACE

目安箱バナー