一、问题现象
程序报错:ORA-12516:TNS:监听程序找不到符合协议堆栈要求的可用处理程序

二、问题排除脚本
--查看没会话的进程
SELECT
CASE WHEN s.sid IS NULL THEN 'NO_SESSION' ELSE 'HAS_SESSION' END AS link_state,
NVL(p.pname, '(null)') AS pname,
p.program,
p.background,
COUNT(*) AS cnt
FROM v$process p
LEFT JOIN v$session s ON s.paddr = p.addr
GROUP BY
CASE WHEN s.sid IS NULL THEN 'NO_SESSION' ELSE 'HAS_SESSION' END,
NVL(p.pname, '(null)'),
p.program,
p.background
ORDER BY cnt DESC
--现在设的上限是多少
SELECT resource_name, current_utilization, max_utilization, limit_value
FROM v$resource_limit
WHERE resource_name IN ('processes', 'sessions');
--查看进程为什么满了,需要上服务器
SELECT p.pid, p.spid, p.program, p.pname, p.background, p.tracefile
FROM v$process p
LEFT JOIN v$session s ON s.paddr = p.addr
WHERE s.sid IS NULL
AND p.program LIKE 'oracle@dbnode1%'
ORDER BY p.pid;