修改过以后先好点,过一段时间还是报错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.)
tcp 0 0 192.168.100.12:1521 192.168.8.41:55654 ESTABLISHED 16186/oraclejscn
3)让这家伙把程序里面的连接重新修改。