Oracle Net 屬 OSI 第 3 層 (網路層),DBA 可控制 封包大小 (SDU/TDU) 與頻率,底層 TCP/IP 參數 (MTU、視窗大小) 需網管配合。
| 參數 | 檔案 | 作用 | 建議值/策略 |
|---|---|---|---|
tcp.nodelay | protocol.ora | 停用 Nagle 演算法,立即發送小封包 | YES (高互動、低延遲場景);大量批次傳輸建議 NO |
automatic_ipc | sqlnet.ora (Server) | 本地連線自動改用 IPC 繞過網路層 | 資料庫伺服器設 ON;純客戶端設 OFF |
SDU | tnsnames.ora / listener.ora | 發送緩衝區大小 (Session Data Unit) | ≤ MTU (乙太網 1514、Token Ring 4202);寬帶設等於 MTU |
TDU | tnsnames.ora / listener.ora | 傳輸緩衝區大小 (Transport Data Unit) | 理想 = SDU;預設 2048,上限 32767 |
QUEUESIZE | listener.ora | 監聽器連線佇列長度 | 高併發設 32~128;受 OS 限制 (部分 Unix 限 5);MTS 建議用 DISPATCHERS 替代 |
tcp.nodelay = yes
ORCL =
(DESCRIPTION =
(SDU=8192)(TDU=8192)
(ADDRESS = (PROTOCOL=TCP)(HOST=dbhost)(PORT=1521))
(CONNECT_DATA = (SERVICE_NAME=orcl))
)
LISTENER =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL=TCP)(HOST=marvin)(PORT=1521)(QUEUESIZE=64))
)
tcp.nodelay=yes + SDU=TDU=MTU + automatic_ipc=on (本地)。tcp.nodelay=no + SDU=TDU=32767 (最大化承載)。DISPATCHERS 參數中指定 (SDU=...)(TDU=...)。tnsping 確認連線參數生效。trace_level_client=16) 觀察封包大小。V$SESSION_WAIT 中 SQL*Net message from client、SQL*Net more data to client 等待時間。