修改过以后先好点,过一段时间还是报错ORA-12516:TNS: 监听程序找不到符合协议堆栈要求的可用处理程,看一下session数,又快要满了,看来要仔细查查看了。
首先,我们看一下哪台机器搞鬼。
SQL> select MACHINE,count(*)fromv$session groupby MACHINE

我们发现tvmall这台机器在搞什么飞机啊,怎么多连接,问了一下是谁的机器,都说不知道。想想看利用TERMINAL字段能不能把ip查出来。
SQL> selectutl_inaddr.get_host_address(terminal)fromv$session where machine='tvmall';
UTL_INADDR.GET_HOST_ADDRESS(TERMINAL)
--------------------------------------------------------------------------------
202.102.110.206
202.102.110.206
202.102.110.206
202.102.110.206
202.102.110.206
202.102.110.206
不行,那我们可以利用其它方法了。
1)我们利用v$session和v$process视图把进程id拿出来
SELECT s.machine,p.*
FROMv$session s,v$process p
WHERE s.PADDR =p.ADDR AND S.MACHINE ='tvmall';
2)通过netstat-natp |grep $PID在linux里把ip找出来
[oracle@SHOW-100-12 admin]$ netstat-natp|grep 86
(Not all processes could be identified,non-owned process info
willnot be shown, you would have to be root to see it all.)
tcp0 0 192.168.100.12:1521 192.168.8.41:55654 ESTABLISHED 16186/oraclejscn
3)让这家伙把程序里面的连接重新修改。
本文针对ORA-12516错误进行了详细分析,并通过查询v$session和v$process视图确定了问题来源。最终定位到特定机器并解决了连接过多的问题。
1502

被折叠的 条评论
为什么被折叠?



