| 基礎配置 |
資料庫方言 |
告知 ORM 框架底層是哪種資料庫,以產生對應的 SQL。 |
dialect |
(無直接對應,ODP.NET 為 Oracle 專用原生驅動) |
| 基礎配置 |
記錄 SQL |
是否在 Console 或日誌中印出執行的 SQL 語法。 |
logSql |
(無直接對應,通常透過 .NET ORM 或 Oracle Trace 設定) |
| 基礎配置 |
連線字串 |
指定要連線的資料庫 IP、Port 與 Service Name。 |
url |
Data Source |
| 連線池開關 |
啟用連線池 |
是否啟用連線池機制來重複利用實體連線。 |
pooled |
Pooling |
| 容量控制 |
初始連線數 |
連線池剛啟動時,預先建立的連線數量。 |
initialSize |
Min Pool Size (啟動時即盡量滿足此數量) |
| 容量控制 |
最小閒置連線 |
連線池常態維持的最小連線數,減少突發流量的建立成本。 |
minIdle / minimumIdle |
Min Pool Size |
| 容量控制 |
最大活動連線 |
整個連線池允許擴張到的極限總數,保護 DB 不被撐爆。 |
maxActive / maximumPoolSize |
Max Pool Size |
| 容量控制 |
最大閒置連線 |
允許處於閒置狀態的最大連線數,超過此數的閒置連線會被釋放。 |
maxIdle |
(由 Min Pool Size 與 Decr 步進機制控制) |
| 擴縮機制 |
連線增量 |
當連線不夠用時,一次額外建立的連線數量步進值。 |
(框架通常預設為 1,逐一增加) |
Incr Pool Size |
| 擴縮機制 |
連線減量 |
當回收閒置連線時,一次關閉的連線數量步進值。 |
(框架通常由驅逐執行緒逐一回收) |
Decr Pool Size |
| 生命週期 |
連線等待逾時 |
當池中無可用連線時,應用程式等待獲取連線的極限時間(毫秒/秒)。 |
maxWait / connectionTimeout |
Connection Timeout (預設單位為秒) |
| 生命週期 |
最大存活時間 |
強制關閉並重建連線的時間上限,對於 RAC 環境的負載重新分配極為重要。 |
maxAge / maxLifetime |
Connection Lifetime (預設單位為秒) |
| 生命週期 |
閒置回收時間 |
連線閒置超過此時間後,將被標記為可回收。 |
minEvictableIdleTimeMillis / idleTimeout |
(ODP.NET 每 3 分鐘自動執行一次閒置評估,無對應參數) |
| 驅逐執行緒 |
驅逐檢查間隔 |
背景執行緒每隔多久醒來檢查一次是否有超時的閒置連線。 |
timeBetweenEvictionRunsMillis |
(由 ODP.NET 底層自動排程,無對應參數) |
| 驅逐執行緒 |
每次檢查數量 |
每次背景執行緒醒來時,要檢查多少個連線。 |
numTestsPerEvictionRun |
(由 ODP.NET 內部演算法決定,無對應參數) |
| 有效性驗證 |
借用前驗證 |
在從連線池取出連線前,先測試其是否存活(應對 RAC 節點偏移)。 |
testOnBorrow |
Validate Connection |
| 有效性驗證 |
閒置時驗證 |
驅逐執行緒在檢查閒置連線時,是否順便測試其存活狀態。 |
testWhileIdle |
HA Events (ODP.NET 依賴 HA Events 即時剔除死連線) |
| 有效性驗證 |
歸還前驗證 |
將連線放回連線池之前,測試其是否存活。 |
testOnReturn |
(無直接對應參數) |
| 有效性驗證 |
驗證語法 |
用來測試連線是否存活的 SQL 語法。 |
validationQuery (例如 SELECT 1) |
(ODP.NET 原生支援 Ping DB,無需指定 SQL) |
| 有效性驗證 |
驗證逾時 |
驗證語法執行的極限時間。 |
validationQueryTimeout |
(包含在整體的 Connection Timeout 中) |
| 有效性驗證 |
驗證間隔限制 |
避免過度頻繁驗證,定義兩次驗證之間的最短間隔。 |
validationInterval |
(無直接對應參數) |
| 進階與監控 |
JMX 監控啟用 |
是否將連線池的狀態(如活躍數、閒置數)註冊到 Java JMX 以便工具監控。 |
jmxEnabled |
.NET 通常使用 Performance Counters 監控 |
| 進階與監控 |
JDBC 攔截器 |
註冊攔截器以捕捉連線狀態或 SQL 執行過程(如 ConnectionState)。 |
jdbcInterceptors |
(無直接對應,需透過 .NET 的 DbCommandInterceptor 實作) |
| 交易與效能 |
預設交易隔離 |
設定連線的預設隔離層級(如 Read Committed)。 |
defaultTransactionIsolation |
(通常透過 .NET TransactionScope 或程式碼指定) |
| 交易與效能 |
環境交易控制 |
決定連線是否自動加入 .NET 的分散式/環境交易(TransactionScope)。 |
(Java 透過 JTA/XA 另行控制) |
Enlist |
| 交易與效能 |
語法快取 |
快取常執行的 SQL 語法,降低 DB 重新 Parsing 的負擔。 |
(Java 通常在 JDBC URL 中設定 statementCacheSize) |
Statement Cache Size |
| RAC 專屬 |
高可用性事件 |
接收 RAC DB 發出的節點開關機或故障事件(FAN Events),快速剔除失效連線。 |
(Java 需改用 Oracle UCP 連線池才能完美支援) |
HA Events |
| RAC 專屬 |
執行階段負載平衡 |
根據 RAC 節點的回報(RLB),聰明地將新連線請求導向附載較低的節點。 |
(Java 需改用 Oracle UCP 連線池才能完美支援) |
Load Balancing |