首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 邏輯儲存結構核心觀念:表空間、段、區、塊 四層架構完整圖解

     編輯:Oracle 資料庫基礎

四層架構關係圖

Tablespace (表空間)
    │ 1:N
    ▼
Segment (段: Table/Index/Undo/Temp/LOB)
    │ 1:N
    ▼
Extent (區/盤區)
    │ 1:N
    ▼
Block (塊/區塊) ──► 最小 I/O 單位 (DB_BLOCK_SIZE)

1. 表空間 — 邏輯容器

  • 由 1 個或多個資料檔 組成。
  • 一資料檔 僅屬於 1 表空間。
  • 類型:永久 (Permanent)、暫存、Undo。
  • 管理模式:LMT (Locally Managed Tablespace) 為主流,位圖管理區分配,廢除 Dictionary Managed。

2. 段 — 物件儲存實體

關鍵規則:一段 僅屬於 一表空間,但可跨越 多資料檔 (Extent 級別跨檔)。

3. 區 — 空間配置單位

  • 連續區塊集合,減少碎片與磁頭移動。
  • LMT 下區大小:UNIFORM SIZE 1M (固定) 或 AUTOALLOCATE (系統自動 64KB~64MB)。
  • 段滿時自動申請新區,直到 MAX_EXTENTS (LMT 理論無上限) 或磁碟空間耗盡。
  • 效能建議:區數越少越好,避免大量小區造成字典/位圖掃描開銷。

4. 塊 — 最小 I/O 單位

  • DB_BLOCK_SIZE 建庫時指定 (2K/4K/8K/16K/32K),終身不可變更。
  • OS Block 整數倍 (通常 4KB/8KB)。
  • 所有存取 (讀/寫/快取/恢復) 以塊為單位。
  • 區大小若非塊大小整數倍,Oracle 會向上取整至塊邊界。

關鍵查詢視圖

-- 表空間與資料檔
SELECT tablespace_name, file_name, bytes/1024/1024 MB FROM dba_data_files;

-- 段資訊
SELECT segment_name, segment_type, tablespace_name, extents, blocks
FROM dba_segments WHERE owner = 'SCOTT';

-- 區分佈
SELECT file_id, block_id, blocks FROM dba_extents
WHERE segment_name = 'EMP' AND owner = 'SCOTT';

結語

理解「表空間→段→區→塊」四層對應關係,是容量規劃、效能調校 (如區碎片、塊大小選擇)、故障診斷 (如區損壞) 的基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
段類型對應物件特性
Data SegmentHeap Table, Partition, Cluster儲存列資料
Index SegmentB-tree Index, Bitmap Index, IOT儲存索引項
Undo SegmentUndo Tablespace 內交易回滾、一致性讀、Flashback
Temporary SegmentSort/Hash/Global Temp Table操作完成自動釋放
LOB SegmentCLOB/BLOB/NCLOB大物件儲存,可含 LOB Index