DBA 記憶域

表領域

データベースオブジェクトをグループ分けする為の論理的な領域
それぞれがデータベースオブジェクト=セグメントを保持する
各セグメントは物理的なデータベースファイル1つ以上と関連付けられる。

storage_area1

storage_area2

・各表領域に対して1つ以上のデータファイルが作成される。
・セグメントのデータはデータファイルに格納される
表領域:データファイル = 1:N
セグメント:データファイル = 1:N

表領域の種類

表領域 内容
SYSTEM ・管理データ(メイン)
データディクショナリ
SYSAUX 管理データ(補助)
UNDOTBS ロールバック
・フラッシュバック用
読取の一貫性
DBA インスタンス/UNDO」参照
USERS ユーザーオブジェクト
TEMP ソート、結合等PGA不足時に使用
表領域を分ける意味

・使用制限
表領域単位にQUOTA(使用制限)を設定できる。
表などのオブジェクトに使用できる領域の上限値を設定できる。
・セキュリティ
表領域単位でオンライン/オフラインの設定ができる。
ユーザー毎の使用可否を表領域単位で制御できる。
・障害対策
表領域単位でデータのバックアップやリカバリが行える。
ある表領域で障害が発生しても、他の表領域を使用する業務に与える影響を最小限にできる。
・速度向上
表領域を異なるディスク上に配置することで、I/Oの衝突を減少させられる。
速度向上や安全性を考慮して、
表用の表領域や索引用の表領域に分ける事が推奨されている。

管理

サーバー > 表領域
table_space

管理項目 内容
割当済サイズ(MB) データファイル容量合計
使用されている領域(MB) 使用領域容量
使用されている割当済領域(%) データファイル容量に対する使用領域の割合
自動拡張 作成」参照
割当済空き領域(MB) 未使用領域容量
ステータス 作成」参照
データファイル データファイル数
タイプ 作成」参照
エクステント管理 作成」参照
セグメント管理 作成」参照

作成

サーバー > 表領域 > 作成 > データファイル > 追加
em_tablespace1

サーバー > 表領域 > 作成
em_tablespace2

エクステント管理方法 内容(表領域内のエクステント情報) 推奨
ローカル管理 ビットマップ(各データファイル)で管理(速い)
ディクショナリ管理 データディクショナリ(SYSTEM表領域)で管理(遅い)

データの挿入、削除時にどのエクステントのデータを操作するか?等の自動判定方法

タイプ 内容
永続 限定しない
一時 一時セグメント用
UNDO UNDOセグメント用

ステータス 内容
読取/書込 通常
読取専用 参照専用のデータに使用
オフライン リカバリ時等に使用(アクセス不可)

em_tablespace3

セグメント領域の管理 内容
自動 自動
手動 空きリストを使用

QUOTA
QUOTA」参照

削除

削除
表領域内のオブジェクト及びデータファイルも削除される
SQL DDL:表領域/削除」参照

セグメント

storage_area2
データベースオブジェクト(表や索引) 1つに該当する論理的なデータ領域
表や索引をCreateすると自動的に作成される(※2)。
レコードの増加に伴ってセグメント領域も増加する。
表作成時等)に、サイズ上限を設定できる。

エクステント

storage_area2
データブロックが連続したデータ領域
セグメントが複数のデータファイルで構成される場合(※3) でも、
エクステントが複数のデータファイルに分割される事は無い。
セグメント作成時には1つ以上のエクステントが必要(※2)。
表レコードの増加等によりセグメントが増大する場合、
エクステントをセグメントに追加する(手動or自動)
通常、表領域作成時に表領域の最大サイズ及び、エクステントのサイズを指定する。
エクステントを一杯まで使用した後に、エクステントが追加されると、
表領域のサイズも追加エクステント分増える。
表領域作成時に指定した最大サイズを超えてエクステントを追加する事はできない。
またセグメント作成時(表作成等)にもエクステントのサイズを指定できる。
表領域における挙動と

QUOTA
割り当て可能な表領域容量
ユーザー毎に設定
SQL DCL:ユーザー、ロール、権限」参照
QUOTAが0
既存のエクステントは残る為(追加はできない)、
エクステントの残り分のみ、行等のデータ追加は可能

データブロック

データブロックとは?

最小I/O単位
データブロックサイズ:データベース作成時に指定。変更不可
既定値:2,048byte
更新系DB:小さくすると速い
検索系DB:大きくすると速い
データブロック内には複数の行データが格納される

行連鎖

1行の読み込みにおいて複数のデータブロックへアクセスする必要がある状態
遅い
データブロックサイズ < 1行のデータサイズの状態で、
行データを更新した場合に発生する

データブロックに格納されるデータ種類

・ ブロックヘッダ:ブロック毎に必要(80byte)
・ 行データ
・ 行ディレクトリ:
・ 表ディレクトリ:表毎に必要(4byte)

行データ

サイズ:可変長
NUMBER型:値の桁数÷2+1
VARCHAR2型:値の桁数に応じて可変
CHAR型:有効桁分固定
DATE型:7byte固定

PCTFREE

Percent Free
データブロック毎の空き領域割合
規定値:10%
行連鎖を防ぐ為に、
データブロックにおいてPCTFREEに達すると、
新しいデータブロックに保存される

PCTUSED

Percent Used
データブロックにおける行データの使用率
規定値:40%
一度PCTFREEに達したデータブロックにはデータは追加されなくなるが、
データが削除されたりしてPCTUSEDを下回った場合には再度追加される。

Oracle

次の記事

Oracle DBCA使用方法