暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【CONNECT】ORA-00020错误处理方法

DBA小白成长记 2018-09-26
2616

项目经理:快快,嘉儿,应用连不上了报ORA-12560:TNS:协议适配器错误,按照百度上的我都查过了,没有问题


我:准备用sqlplus as sysdba连接数据库,发现问题了——

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

超出最大连接数,sqlplus也连不上去,针对这种情况,我们只能杀掉一些无用的数据连接进程(若要杀掉应用的相关进程,最好让他们先把应用停掉,然后再kill掉相关进程,oracle的后台进程一定不能随便kill),让sqlplus可以正常登录,然后再去改相关的参数


【windows】

C:\Users\Administrator>netstat -bo

活动连接

协议  本地地址      外部地址      状态        PID

TCP    [fe80::942a:8432:c23f:69ff%19]:1521  SS-LiangWei:50248      ESTABLISHED   2528  [TNSLSNR.exe]

TCP    [fe80::942a:8432:c23f:69ff%19]:1521  SS-LiangWei:50350      ESTABLISHED   2528  [TNSLSNR.exe]

TCP   [fe80::942a:8432:c23f:69ff%19]:50248  SS-LiangWei:1521       ESTABLISHED    2604  [ORACLE.EXE]

TCP   [fe80::942a:8432:c23f:69ff%19]:50350  SS-LiangWei:1521       ESTABLISHED     3920  [plsqldev.exe]


C:\Users\Administrator>taskkill pid 3920

成功: 给进程发送了终止信号,进程的 PID 为 3920。


然后sqlplus可以正常登录

【linux】

1)查看数据库后台进程信息
ora11g@db /home/oracle$
ps -ef | grep ora11g(实例名)
oracle   22882     1  0 21:24 ?        00:00:00 ora_pmon_ora11g
oracle   22884     1  0 21:24 ?        00:00:00 ora_vktm_ora11g
oracle   22888     1  0 21:24 ?        00:00:00 ora_gen0_ora11g
oracle   22890     1  0 21:24 ?        00:00:00 ora_diag_ora11g
oracle   22892     1  0 21:24 ?        00:00:00 ora_dbrm_ora11g
oracle   22894     1  0 21:24 ?        00:00:00 ora_psp0_ora11g
oracle   22896     1  0 21:24 ?        00:00:00 ora_dia0_ora11g
oracle   22898     1  0 21:24 ?        00:00:00 ora_mman_ora11g
oracle   22900     1  0 21:24 ?        00:00:00 ora_dbw0_ora11g
oracle   22902     1  0 21:24 ?        00:00:00 ora_lgwr_ora11g
oracle   22904     1  0 21:24 ?        00:00:00 ora_ckpt_ora11g
oracle   22906     1  0 21:24 ?        00:00:00 ora_smon_ora11g
oracle   22908     1  0 21:24 ?        00:00:00 ora_reco_ora11g
oracle   22910     1  0 21:24 ?        00:00:00 ora_mmon_ora11g
oracle   22912     1  0 21:24 ?        00:00:00 ora_mmnl_ora11g
oracle   22914     1  0 21:24 ?        00:00:00 ora_d000_ora11g
oracle   22916     1  0 21:24 ?        00:00:00 ora_s000_ora11g
oracle   22945 22103  0 21:24 ?    00:00:00 oracleora11g (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle   22947     1  0 21:24 ?        00:00:00 ora_qmnc_ora11g
oracle   22961     1  0 21:24 ?        00:00:00 ora_cjq0_ora11g
oracle   22972     1  0 21:25 ?        00:00:00 ora_q000_ora11g
oracle   22974     1  0 21:25 ?        00:00:00 ora_q001_ora11g
oracle   22993 22992  0 21:25 ?    00:00:00 oracleora11g (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle   23106 23066  0 21:27 pts/6    00:00:00 grep --color ora11g
这里显示出两类进程,一类是Oracle数据库的后台进程,另外一类是用户连接进程。谨记
,Oracle数据库后台进程不可轻易手工杀掉

ora11g@db /home/oracle$ kill -9 22945


【最终解决】

当sqlplus可以连接数据库后,根据业务需求增大进程数

alter system set processes=1000 scope=spfile;

关库起库

确认调整结果

show parameter processes;

show parameter sessions;

对于生产环境最有效的避免发生ORA-00020错误的方法便是,创建数据库时充分评估系统需要的最大进程数,一次性设置充分。



本文分享自微信公众号 - DBA小白成长记,如有侵权,请联系 service001@enmotech.com 删除。
最后修改时间:2019-12-18 15:42:44
文章转载自DBA小白成长记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论