Oracle 實例運行受多項初始化參數限制,其中 SESSIONS 與 PROCESSES 最為關鍵,直接決定系統並發承載上限。本文深入解析兩者關係、設定原則與常見錯誤代碼。
指定一個實例中可同時存在的 Session 總數,包含使用者 Session 與背景進程 Session。
SESSIONS = (預估最大並發使用者數 + 背景進程數) × 1.1
範例:預估 100 並發使用者,背景進程約 10 個 → (100 + 10) × 1.1 = 121。
ORA-00018: maximum number of sessions exceeded
Cause: All session state objects are in use.
Action: Increase the value of the SESSIONS initialization parameter.
指定實例在作業系統層面可同時運行的進程總數(Windows 平台為執行緒數)。
PROCESSES = (並發使用者 + 背景進程) × 1.1PROCESSES = 一般背景進程 + MAX_SHARED_SERVERS + MAX_DISPATCHERSORA-00020: maximum number of processes (%s) exceeded
Cause: All process state objects are in use.
Action: Increase the value of the PROCESSES initialization parameter.
| 項目 | SESSIONS | PROCESSES |
|---|---|---|
| 層級 | 資料庫邏輯層 | 作業系統物理層 |
| 預設值關係 | 通常 = PROCESSES × 1.1 | 基準值 |
| 修改生效 | 需重啟實例 | 需重啟實例 |
V$RESOURCE_LIMIT 觀察當前使用率與上限。SESSIONS 決定「能登入多少人」,PROCESSES 決定「OS 能跑多少進程」。科學設定並持續監控,是穩定運行的基石。