2.

論理構造

編集

Oracleのデーターベースの論理構造の記事です。物理的なファイル配置とは別に、Oracleは内部のデータを表領域 → セグメント → エクステント → データブロックという階層で論理的に管理しています。

子ページから表領域セグメントエクステントデータブロックを選択してください。

本ページの子ページ一覧

項目内容
表領域論理ストレージ単位。データファイルに対応
セグメント表・索引等オブジェクトの占有領域
エクステントセグメント内の連続したブロックの集まり
データブロックI/Oの最小単位(既定8KB)

論理構造の階層関係

論理階層意味対応する物理
1. データベースOracleインスタンスが管理する全体全データファイル
2. 表領域 (Tablespace)論理的なストレージ単位1つ以上のデータファイル
3. セグメント (Segment)1つのオブジェクト(表・索引等)1つの表領域内の領域
4. エクステント (Extent)セグメント内の連続割り当て単位同一データファイル内の連続ブロック
5. データブロック (Block)I/Oの最小単位既定8KB(DB_BLOCK_SIZE)

イメージ図(テキスト版)

データベース
  └── 表領域 USERS
        ├── データファイル users01.dbf
        │    └── セグメント (TABLE: orders)
        │        ├── エクステント1 (連続ブロック群)
        │        │    ├── ブロック
        │        │    └── ブロック
        │        └── エクステント2
        └── データファイル users02.dbf

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

論理物理
表領域データファイル(.dbf)
セグメント同一表領域内のファイルに分散可
エクステント1つのデータファイル内の連続領域
データブロックOSブロックの倍数(通常8KB)

確認のためのSQL

-- 表領域
SELECT tablespace_name, status, contents FROM dba_tablespaces;

-- セグメント
SELECT segment_name, segment_type, tablespace_name,
        bytes/1024/1024 AS mb
  FROM dba_segments
 WHERE owner = 'SCOTT';

-- エクステント
SELECT segment_name, extent_id, blocks, bytes
  FROM dba_extents
 WHERE segment_name = 'ORDERS';

-- ブロックサイズ
SHOW PARAMETER db_block_size;

なぜ階層構造になっているか

  • 物理ファイル配置から論理を分離: 別ディスクに移しても、SQLからは表領域名で透過的に扱える
  • 領域拡張が動的: エクステント単位で必要時に確保
  • I/Oブロックの効率化: OSブロックより大きい単位でアクセス
  • バックアップ単位: 表領域単位で部分バックアップ可能

関連

編集
Post Share
子ページ
  1. 表領域
  2. セグメント
  3. エクステント
  4. データブロック
同階層のページ
  1. 物理構造
  2. 論理構造