在 Oracle 網路層中,以下四個 TNS 錯誤常同時出現,指向同一類資源耗盡問題:
監聽日誌中大量出現上述錯誤,伴隨作業系統錯誤 IBM/AIX RISC System/6000 Error: 11: Resource temporarily unavailable 或 32-bit Windows Error: 8: Exec format error。伺服器配置:每用戶最大進程數 600,Oracle processes 參數設為 600,實際進程峰值 482,Session 峰值 490,sessions 參數設為 840。表面上資源尚有餘裕,但連線仍失敗。
TNS-00510 明確指出:作業系統層面的檔案/ Socket 限制或記憶體分頁空間不足,而非 Oracle 參數限制。 Oracle processes 僅限制專用伺服器進程,尚不包含背景進程(SMON、PMON、LGWR 等)、平行查詢進程、監聽器進程等。AIX/Windows 預設的每用戶進程數、檔案描述符、記憶體分頁空間均可能成為瓶頸。
processes = 1000
shared_pool_size = 240000000
db_block_buffers = 90000
db_block_size = 4096
sort_area_size = 65536
open_cursors = 100
max_dump_file_size = 10240
...
並發用戶達 700+ 時,新連線報 ORA-12560、ORA-03114,舊連線正常。重啟後 750+ 並發再次發生。警告日誌無錯誤,listener.log 大量記錄 TNS-12500/12540/12560/00510 及 32-bit Windows Error: 8。
orastack 縮減執行緒堆疊保留記憶體orastack oracle.exe 500000
orastack tnslsnr.exe 500000
將每執行緒保留記憶體從 1MB(1048576 bytes)降至 500KB(500000 bytes)。sort_area_size、hash_area_size、open_cursors、job_queue_processes、parallel_max_servers。/3G 開關、PSE36 / AWE 機制突破 2GB 限制。TNS-00510/12540 核心提示:作業系統資源(檔案描述符、進程數、虛擬記憶體)耗盡。排查步驟:
ulimit -n、maxuproc、分頁空間、32 位進程地址空間)。processes + 背景進程 + 平行進程 + 監聽器。orastack 縮減堆疊或遷移至 MTS/64 位平台。