應用出現 ORA-12519: TNS:no appropriate service handler found,通常因資料庫程序數達到 PROCESSES 參數上限,導致 PMON 向監聽器回報 BLOCKED 狀態,拒絕新連線。本文提供診斷查詢與線上調整步驟。
SERVICE_UPDATE 判斷負載。PROCESSES 時,服務處理器狀態轉為 BLOCKED,回傳 ORA-12519 或 ORA-12516。SERVICE_UPDATE 有間隔,監聽器顯示連線數可能略低於實際值。-- 1. 目前使用中的程序數
SELECT COUNT(*) FROM v$process;
-- 2. PROCESSES 參數上限
SELECT value FROM v$parameter WHERE name = 'processes';
-- 3. 啟動以來最高並發連線數(高水位)
SELECT MAX(utilization) FROM v$resource_limit WHERE resource_name = 'processes';
-- 1. 修改 SPFILE(永久生效)
ALTER SYSTEM SET processes = 500 SCOPE = SPFILE;
-- 2. 重啟資料庫
SHUTDOWN IMMEDIATE;
STARTUP;
-- 3. 驗證
SELECT value FROM v$parameter WHERE name = 'processes';
注意:PROCESSES 為靜態參數,SCOPE=SPFILE 並重啟後生效;SESSIONS 通常自動推導為 1.1 * PROCESSES + 5,同步調大。
SELECT
s.osuser,
s.username,
s.machine,
s.program,
s.logon_time,
sq.sql_text,
sq.executions,
sq.elapsed_time / 1e6 / NULLIF(sq.executions,0) AS avg_elapsed_sec
FROM v$session s
LEFT JOIN v$sql sq ON s.sql_id = sq.sql_id
WHERE s.type = 'USER'
ORDER BY s.logon_time;
v$resource_limit 使用率 > 80% 觸發告警。AWR / ASH 觀察 logons cumulative 趨勢,預估成長。PROCESSES (靜態) → SESSIONS (衍生) → TRANSACTIONS (衍生)
建議:PROCESSES 設為預估峰值連線數 * 1.3 ~ 1.5