数据库连接数超了,导致数据库连接不上,如何排查当前连接数,以及如何修改最大连接数限制?
1.对比当前连接数和最大连接数
如果差的比较少,比如相差十几,二十几,连不上的话,很有可能是用连接池连接,一次申请连接数大于剩余的连接数导致的。
#查看当前总连接数
SELECT count(*) FROM V$session;
#查看数据库设置的最大连接数,process的值即为最大连接数
SELECT * from V$PARAMETER WHERE NAME LIKE '%process%';#这条sql服务端和客户端都能执行;
show parameter process;#这条命令只能在服务端执行
2.分组查看每个用户的连接数情况
如果是有不用的服务占了大量连接,建议停掉这个不用的服务。如果确实不够用,再执行第三步的操作,修改最大连接限制。
#OSUSER:连接主机登录的用户名; MACHINE:主机host; USERNAME:数据库用户名; STATUS:连接状态
select a.OSUSER,a.MACHINE, a.USERNAME,a.STATUS,COUNT(*) as CONNECT_NUM
FROM V$SESSION a
LEFT JOIN "V$SQLAREA" b ON a.SQL_ADDRESS = b.ADDRESS
-- WHERE
-- a.MACHINE LIKE 'afp-asset-center-%'
-- AND a.status != 'KILLED'
GROUP BY a.OSUSER,a.MACHINE, a.USERNAME,a.STATUS
ORDER BY CONNECT_NUM DESC;
3.修改最大连接数限制
#登录dba账号
sqlplus / as sysdba;
#修改最大连接数,并持久化
alter system set processes=6000 scope=spfile;
#关闭数据库
shutdown immediate;
#启动数据库
startup;
标签:最大,数据库,连接数,不上,MACHINE,修改,连接
From: https://www.cnblogs.com/hujunwei/p/17798122.html