ORA-12537: TNS:connection closed ORA-00020: maximum number of processes (2000) exceeded

ORA-12537: TNS:connection closed

ORA-00603: ORACLE server session terminated by fatal error

ORA-00020: maximum number of processes (2000) exceeded

1、问题背景

开发说连接数据库报错,监听程序已经关闭

2、解决办法

1.根据提示我检查了监听状态,发现有一个没起,启动后还是连不上

cd $ORACLE_HOME/network/admin/
lsnrctl start listener

启动后我连接了下数据库,不正常,能连接,但是show parameter name都报错,提示没有登

2.查看alert日志,发现报了大量的ORA-00020报错

cd $ORACLE_BASE/diag/rdbms/orcl/trace/

原来是连接数达到最大限制了,所以才连不上数据库

3.清理会话

#查看非本地连接进程
ps -ef|grep -v grep|grep LOCAL=NO |wc -l

#杀掉所有非本地连接进程
ps -ef|grep -v grep|grep LOCAL=NO |awk '{print $2}'|xargs kill -9

#查看哪个ip链接数最多
netstat -na|grep "ESTA"|awk '{print $5}'|awk -F ":" '{print $1}'|awk '{++S[$NF]} END {for (a in S) print a, S[a]}'

这个根据实际情况而定,我这边是因为应用问题导致,所以要杀掉会话,如果是正常连接达到最大限制,可以根据数据库配置调整链接数

4.查看process相关参数

#查看当前系统允许的进程连接数
show parameter process;

#查看系统允许的会话数
show parameter session;

#查看系统当前进程的连接数
select count(*) from v$process;

#查看系统当前会话的连接数
select count(*) from v$session; 

#查看当前系统活动的连接数
select count(*) from v$session where status='ACTIVE';

#修改process和session
alter system set processes=3000 scope=both;
alter system set sessions=3100 scope=both;

#重启生效
shutdown immediate;
startup;

你可能感兴趣的:(ORACLE,oracle,数据库)