oracle进程异常问题(进程满了)排除方法

一、问题现象

程序报错: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;