
Oracle 採用多層次邏輯存儲架構,自大到小依次為:
| 表空間 | 用途 | 備註 | |
|---|---|---|---|
| SYSTEM | 數據字典、系統元數據 | 必須聯機,不可離線 | |
| SYSAUX | 輔助系統信息(AWR、EM、統計信息等) | 10g+ 引入,減輕 SYSTEM 壓力 | |
| UNDOTBS1 | 存儲事務修改前的舊映像(Undo) | 支援閃回、讀一致性、回滾 | |
| TEMP | 排序、哈希連接、全局臨時表等臨時操作 | 非持久化,實例重啟自動清理 |
| 現象 | 成因 | 影響 | 解決 |
|---|---|---|---|
| 行遷移 | PCTFREE 過小,UPDATE 導致行不再適配原塊,整行移至新塊,原塊留指針 | 邏輯讀翻倍(需讀兩塊) | 調大 PCTFREE、重建表 (ALTER TABLE MOVE / CTAS) |
| 行鏈接 | 單行數據大於塊大小(如 LONG/LOB),或插入時單塊無法容納 | 跨塊讀取,性能損耗更大 | 增大 DB_BLOCK_SIZE、將大字段移至 LOB 段、調整存儲屬性 |
dumpe2fs /dev/sda1 查看文件系統塊大小-- 查看所有表空間
SELECT * FROM DBA_TABLESPACES;
-- 查看數據文件與表空間映射
SELECT file_name, tablespace_name, bytes/1024/1024 MB FROM DBA_DATA_FILES;
-- 查看段空間使用
SELECT segment_name, segment_type, bytes/1024/1024 MB FROM DBA_SEGMENTS WHERE tablespace_name = 'USERS';
理解 Oracle 存儲結構是容量規劃、性能調優、故障排查的基石。關鍵點在於:合理規劃表空間與數據文件分佈、正確設置 PCTFREE/PCTUSED 防止行遷移、監控段擴展頻率避免碎片化、善用本地管理表空間 (LMT) 簡化空間管理。