兩種模式架構對比
專用服務器模式
- 機制:Listener 收到請求 → 創建專用服務器進程 → 一對一服務該客戶端。
- 記憶體模型:UGA (User Global Area) 存放於 PGA (Program Global Area) 中,隨進程私有分配。
- 優點:隔離性強,長時間查詢不阻塞其他會話;簡單直觀,無調度開銷。
- 缺點:連接數 = 進程數,大量併發導致 PGA 總量暴增,易耗盡物理內存(如 1 萬連接需 1 萬 PGA)。
共享服務器模式 (MTS)
- 機制:啟動時預創建共享服務器進程池 → Listener 生成 Dispatcher 進程 → 客戶端請求入 SGA 請求隊列 → 空閒共享服務器取請求處理 → 結果放回 SGA 響應隊列 → Dispatcher 返回客戶端。
- 記憶體模型:UGA 移至 SGA (System Global Area),共享服務器進程數固定,內存可控。
- 優點:支撐極高併發(萬級連接僅需百級進程);啟用高級特性(如 DRCP、Connection Pooling)前提;內存佔用可預測。
- 缺點:Dispatcher/隊列增加延遲;長事務佔用共享服務器導致其他請求排隊;若應用服務器已有連接池(WebLogic/DBCP),雙層池化反而拖累性能;事務未提交鎖定資源易引發死鎖,需配置
SQLNET.EXPIRE_TIME 或 IDLE_TIME。
選型決策矩陣
| 場景 | 推薦模式 | 理由 |
| OLTP 高併發短事務 | 共享服務器 | 連接數大、事務短、內存敏感 |
| 數據倉庫/報表長查詢 | 專用服務器 | 單會話佔用資源久、不宜阻塞共享池 |
| 應用服務器已有連接池 | 專用服務器 | 避免雙層池化開銷 |
| 需使用 DRCP/高級安全特性 | 共享服務器 | 特性依賴 MTS 架構 |
最佳實踐:混合模式
在同一實例同時啟用兩種模式:
SERVICE_NAMES = oltp_svc, dw_svc
DISPATCHERS = (PROTOCOL=TCP)(SERVICE=oltp_svc) → 走共享服務器處理高併發業務。
- 客戶端連接
dw_svc 走專用服務器處理長報表。
通過服務名路由,實現「業務分流、資源隔離、性能最優」。