この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:2
更新日時:2026-06-10 17:35:41
タイトル: 論理構造
Oracleのデーターベースの論理構造の記事です。物理的なファイル配置とは別に、Oracleは内部のデータを表領域 → セグメント → エクステント → データブロックという階層で論理的に管理しています。
子ページから表領域、セグメント、エクステント、データブロックを選択してください。
本ページの子ページ一覧
論理構造の階層関係
| 論理階層 | 意味 | 対応する物理 |
| 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ブロックより大きい単位でアクセス
- バックアップ単位: 表領域単位で部分バックアップ可能
関連