Oracle 儲存架構分為物理層 (作業系統檔案) 與邏輯層 (資料字典管理) 兩個維度。本文系統對照三大物理檔案類型、五層邏輯儲存結構、表空間管理模式、區塊大小設定、模式與使用者關係,建立完整儲存心智模型。
物理檔案三大類
| 檔案類型 | 慣例副檔名 | 核心功能 | 關鍵特性 |
| 資料檔 | .dbf / .ora | 儲存所有使用者資料 (表、索引、LOB 等) | 一檔屬一表空間,離線/線上可調整大小、可啟用 AUTOEXTEND |
| 控制檔 | .ctl | 記錄資料庫物理結構元資料 (檔案路徑、SCN、Checkpoint、RMAN 備份資訊) | 多工建議 ≥3 份放不同磁碟,CONTROL_FILES 參數指定,損毀需重建 |
| 線上 Redo Log | .log | 循環記錄所有資料庫變更 (DML/DDL),支援復原與 Data Guard | Group (多工成員) 循環覆寫,狀態: CURRENT/ACTIVE/INACTIVE/UNUSED |
邏輯儲存五層結構
表空間 → 段 → 區 → 區塊
Tablespace → Segment → Extent → Data Block
1. 表空間
- 最大邏輯單位,收容段。資料庫至少一表空間 (SYSTEM)。
- 由一或多資料檔組成,一檔專屬一表空間。
- 管理模式:
- 字典管理 (舊):空間資訊存字典表,易產生鎖爭用。
- 本地管理 (預設):位圖在檔案標頭管理,高併發、無字典鎖。
- 區塊大小:預設
DB_BLOCK_SIZE (8KB 常見),可建立非標準區塊大小表空間 (2K/4K/16K/32K) 配合 DB_nK_CACHE_SIZE。
- 重要系統表空間:
SYSTEM (字典/核心物件)、SYSAUX (輔助元資料)、UNDO (回滾)、TEMP (排序/雜湊/臨時表)。
2. 段
| 段類型 | 儲存內容 | 範例 |
| 資料段 | 表資料、分區、叢集 | HEAP TABLE, PARTITION, CLUSTER |
| 索引段 | B-Tree/Bitmap 索引 | PRIMARY KEY, UNIQUE, NORMAL INDEX |
| 回滾段 | Undo 資料 (手動管理模式) | PUBLIC ROLLBACK SEGMENT |
| 臨時段 | 排序、雜湊聯結、建立索引中間結果 | GLOBAL TEMPORARY TABLE, SORT |
3. 區
- 空間配置最小單位,由連續區塊組成。
- 配置策略:
UNIFORM SIZE (固定) 或 AUTOALLOCATE (系統自動 64KB→1MB→8MB→64MB)。
- 段擴展:滿區時申請下一區,可跨資料檔 (同表空間)。
4. 區塊
- IO 存取最小單位,大小由表空間建立時決定 (2K~64K)。
- 結構:Block Header (FS1/FS2/FS3 空閒清單、交易槽位)、Row Directory、Row Data (Heap/Cluster)。
- PCTFREE/PCTUSED (手動段空間管理) 或 ASSM (自動段空間管理) 控制空閒空間重用。
5. 模式
- 使用者擁有的資料庫物件總稱:表、視圖、索引、同義詞、序列、程序、函式、套件、觸發器、型別、資料庫連結、目錄、Java Class/Source/Resource 等。
- 使用者 = 模式擁有者 (1:1 對應),
CREATE USER 即隱含建立模式。
- 物件參考:
schema.object (跨模式需權限/同義詞)。
建立表空間語法範例
-- 本地管理 + 自動區塊配置 + 自動段空間管理 (ASSM) - 推薦標準
CREATE TABLESPACE app_data
DATAFILE '/u01/oradata/app_data01.dbf' SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE 10G
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO
BLOCKSIZE 8K;
-- 非標準區塊大小表空間 (需先設定 DB_16K_CACHE_SIZE)
CREATE TABLESPACE idx_16k
DATAFILE '/u02/oradata/idx_16k01.dbf' SIZE 500M
BLOCKSIZE 16K
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
擴展資料檔語法
-- 手動調整大小
ALTER DATABASE DATAFILE '/u01/oradata/app_data01.dbf' RESIZE 2G;
-- 啟用/調整自動擴展
ALTER DATABASE DATAFILE '/u01/oradata/app_data01.dbf' AUTOEXTEND ON NEXT 50M MAXSIZE 20G;
避坑提醒
- 控制檔多工:單一控制檔風險極高,務必
CONTROL_FILES=('disk1/ctl1','disk2/ctl2','disk3/ctl3')。
- Redo Log 多工:每 Group 至少 2 Member 放不同磁碟/控制器。
- 表空間離線備份:非 OMF 檔案備份前建議
ALTER TABLESPACE ... BEGIN BACKUP (熱備份模式)。
- 區塊大小選擇:OLTP 8K 平衡;DSS/資料倉庫 16K/32K 減少層級;小列表 2K/4K 減少浪費。
物理檔案對應邏輯結構,區塊是橋樑。掌握三大物理檔案職責、五層邏輯拆解、本地管理/ASSM 最佳實務,是容量規劃、效能調優、備份恢復的基石。
- 上一篇文章: Oracle 進程架構詳解:使用者進程、伺服器進程與五大背景進程職責對照
- 下一篇文章: Oracle SQL*Plus 綁定變數完整指南:ACCEPT/DEFINE/& 替代變數與腳本參數傳遞
Copyright ©
程式碼之家 All Rights Reserved