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

Oracle 資料庫配置方案完全解析:專用伺服器、共用伺服器、單任務三大架構深度對比

     編輯:Oracle 資料庫基礎

連線處理三種架構

架構進程模型適用場景優點缺點
1. 單任務 / User-Server 合一單一 OS 進程同時執行用戶程式碼與 Oracle 核心嵌入式、單用戶工具、無網路堆疊 OS零 IPC 開銷、極簡部署無法多用戶並發、缺乏隔離、已淘汰
2. 專用伺服器每個用戶進程對應一個專用 Server ProcessOLTP 高併發、長交易、需高隔離、中小規模資源獨享、效能穩定、除錯簡單進程數線性增長、記憶體佔用大、擴展性受限
3. 共用伺服器 (MTS)多用戶進程共享少量 Dispatcher + Shared Server 進程大量短連線、Web 應用、連線池輔助、記憶體受限進程數大幅減少、支援更多並發用戶、SGA 共用長交易阻塞 Shared Server、程式設計需避免佔用過久、除錯複雜

專用伺服器架構細節

  • 用戶進程 ↔ 專用 Server Process 1:1。
  • 網路層:Listener 接收請求 → Fork/Spawn 專用進程 → 交給專用進程處理。
  • 適用:`DEDICATED` 服務名稱、`SERVER=DEDICATED` TNS 參數。

共用伺服器架構細節

核心進程角色

  • Listener:判斷請求類型,導向 Dispatcher 或建立專用進程。
  • Dispatcher (Dnnn):接收用戶請求,放入 **SGA 共用請求佇列**,回傳結果給用戶。每種網路協議至少一個。
  • Shared Server (Snnn):從請求佇列取任務,執行 SQL,結果放入 **Dispatcher 回應佇列**。不綁定特定用戶,無 Session 狀態(Session 數據在 SGA)。

請求流程

  1. 用戶發送請求 → Dispatcher。
  2. Dispatcher 寫入 SGA **Common Request Queue**。
  3. 閒置 Shared Server 讀取請求 → 執行 → 寫入 **Dispatcher Response Queue**。
  4. Dispatcher 讀取回應 → 發送給用戶。

動態調整

  • Oracle 依請求佇列長度自動啟動/關閉 Shared Server(參數 `SHARED_SERVERS`、`MAX_SHARED_SERVERS`)。
  • Dispatcher 固定數量(`DISPATCHERS` 參數),建議 `(CPU核心數 × 2)` 起步。

SGA 共用結構差異

**共用伺服器必須配置 Large Pool**,避免 UGA 掠奪 Shared Pool 導致 ORA-04031。

參數設定速查

# 專用伺服器(預設)
# 無特殊參數,視作業系統進程限制

# 共用伺服器啟用
DISPATCHERS = "(PROTOCOL=TCP)(DISPATCHERS=4)"
SHARED_SERVERS = 10
MAX_SHARED_SERVERS = 100
SHARED_SERVER_SESSIONS = 500
CIRCUITS = 2000
LARGE_POOL_SIZE = 100M  # 必須設定

選型決策樹

  1. 用戶數 < 500、長交易多、記憶體充足 → **專用伺服器**。
  2. 用戶數 > 1000、Web 短連線、記憶體受限 → **共用伺服器**。
  3. 混合負載 → **預設專用,特定服務名啟用共用**(`(SERVER=SHARED)`),應用層連線池決定走哪條路徑。

現代演進

  • 11g+ **Database Resident Connection Pool (DRCP)**:共用伺服器進階形態,跨進程/實例共用已認證 Session,更適合 PHP/Python/Node.js 等無連線池語言。
  • 12c+ **Multitenant (CDB/PDB)**:資源管理在 Container 層面,共用/專用伺服器配置可在 PDB 級別差異化。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
項目專用伺服器共用伺服器
UGA (User Global Area)在 PGA (Process Private Memory)在 SGA (Shared Pool / Large Pool)
排序區PGA (`SORT_AREA_SIZE`)SGA (`SORT_AREA_RETAINED_SIZE` / Large Pool)
游標狀態PGASGA