ORA-00020: maximum number of processes (40) exceeded模拟会话连接数满
问题描述:在正式生产环境中,有的库建的process和session连接数目设置的较小,导致后期满了无法连接。因为正式库无法进行停库修改,只能释放连接,做个测试模拟
1. 修改现有最大会话与进程连接数
SQL> alter system set processes = 35 scope = spfile; System altered. SQL> alter system set sessions = 40 scope = spfile; System altered.
2.重启生效,加大连接数
通过打开会话框以及连接plsql窗口制造连接数

制造到一定数目时,会发现sqlplus已经登陆不上去

后台日志:
ORA-00020: maximum number of processes (40) exceeded
ORA-20 errors will not be written to the alert log for
the next minute. Please look at trace files to see all
the ORA-20 errors.
此时的连接数情况
SQL> select count(*) from v$process; COUNT(*)
----------
39 SQL> select count(*) from v$session; COUNT(*)
----------
36
3.删除无效session
<一> plsql删除会话

选中要删除的会话,删除完后在后台不会直接释放,在连接窗口执行命令会发现会话和已经被killed掉,然后这边后台释放完成

<二> sqlplus删除会话
查询会话
SQL> select username,status,wait_time,last_call_et from v$session; USERNAME STATUS WAIT_TIME LAST_CALL_ET
------------------------------ -------- ---------- ------------
ACTIVE 0 1874
ACTIVE 0 1873
ACTIVE 0 1873
ACTIVE 0 1873
ACTIVE 0 1869
ACTIVE 0 1868
ACTIVE 0 1858
SYS INACTIVE 0 1805
SYS ACTIVE -1 0
ACTIVE 0 1873
ACTIVE 0 1873 USERNAME STATUS WAIT_TIME LAST_CALL_ET
------------------------------ -------- ---------- ------------
ACTIVE 0 1873
ACTIVE 0 1868
SYSTEM INACTIVE 0 1826
ACTIVE 0 1858
SYS INACTIVE 0 1711
SYS INACTIVE 0 826
ACTIVE 0 1874
ACTIVE 0 1873
ACTIVE 0 1873
ACTIVE 0 1873
ACTIVE 0 1868 USERNAME STATUS WAIT_TIME LAST_CALL_ET
------------------------------ -------- ---------- ------------
ACTIVE 0 1868
SYS INACTIVE 0 1809
SYS INACTIVE 0 1705
SYS INACTIVE 0 1633
SYS INACTIVE 0 1417
ACTIVE 0 1874
ACTIVE 0 1873
ACTIVE 0 1873
ACTIVE 0 1873
SYS INACTIVE 0 1813
ACTIVE 0 1868 USERNAME STATUS WAIT_TIME LAST_CALL_ET
------------------------------ -------- ---------- ------------
SYS INACTIVE 0 1757
SCOTT INACTIVE 0 24
SYSTEM INACTIVE 0 1567 36 rows selected.
生成kill会话语句
SQL> select 'alter system kill session '''||sid||','||serial#||''';'from v$session where LAST_CALL_ET>500 AND status='INACTIVE'; 'ALTERSYSTEMKILLSESSION'''||SID||','||SERIAL#||''';'
--------------------------------------------------------------------------------
alter system kill session '11,1';
alter system kill session '26,21';
alter system kill session '28,29';
alter system kill session '29,7';
alter system kill session '51,3';
alter system kill session '52,9';
alter system kill session '53,9';
alter system kill session '64,9';
alter system kill session '69,17';
alter system kill session '73,31';
alter system kill session '74,5'; 'ALTERSYSTEMKILLSESSION'''||SID||','||SERIAL#||''';'
--------------------------------------------------------------------------------
alter system kill session '75,13'; 12 rows selected.
执行sql语句
SQL> alter system kill session '11,1';
SQL> alter system kill session '26,21';
SQL> alter system kill session '28,29';
SQL> alter system kill session '29,7';
SQL> alter system kill session '51,3';
SQL> alter system kill session '52,9';
SQL> alter system kill session '53,9';
SQL> alter system kill session '64,9';
SQL> alter system kill session '69,17';
SQL> alter system kill session '73,31';
SQL> alter system kill session '74,5';
在后台其中一个连接会话执行命令,已经语法执行
SQL> archive log list;
ORA-00028: your session has been killed
<三> 操作系统kill会话
查询不活跃会话的sid,转换为操作系统的pid,通过操作系统进行kill掉进程
SQL> select username,sid,serial#,status,last_call_et from v$session where status='INACTIVE'; USERNAME SID SERIAL# STATUS LAST_CALL_ET
------------------------------ ---------- ---------- -------- ------------
SYS 11 3 INACTIVE 340
SYS 28 31 INACTIVE 258
SYS 51 5 INACTIVE 267
SYS 52 11 INACTIVE 255
SYS 53 11 INACTIVE 253
SYS 69 19 INACTIVE 261
SCOTT 74 7 INACTIVE 7
SYSTEM 75 13 INACTIVE 3429
sid转换为spid
select spid from v$process where addr in (select paddr from v$session where sid=11);
select spid from v$process where addr in (select paddr from v$session where sid=28);
select spid from v$process where addr in (select paddr from v$session where sid=51);
select spid from v$process where addr in (select paddr from v$session where sid=52);
select spid from v$process where addr in (select paddr from v$session where sid=53);
select spid from v$process where addr in (select paddr from v$session where sid=69);
select spid from v$process where addr in (select paddr from v$session where sid=74);
select spid from v$process where addr in (select paddr from v$session where sid=75);
操作系统进程kill掉
[oracle@orcl ~]$ kill -9 5294
[oracle@orcl ~]$ kill -9 5391
[oracle@orcl ~]$ kill -9 5384
-bash: kill: (5384) - No such process
[oracle@orcl ~]$ kill -9 5393
[oracle@orcl ~]$ kill -9 5395
[oracle@orcl ~]$ kill -9 5389
[oracle@orcl ~]$ kill -9 5413
[oracle@orcl ~]$ kill -9 4996
查看现有连接,已经被释放
SQL> archive log list;
ORA-03135: connection lost contact
查看连接数据库连接数
SQL> select count(*) from v$session;
COUNT(*)
----------
29
SQL> select count(*) from v$process;
COUNT(*)
----------
35
<四> 增加进程和会话数,不过要停库
1.查看processes和sessions参数 show parameter processes
show parameter sessions
select count(*) from v$session ; --当前的session连接数
select count(*) from v$process ; --当前的数据库连接数
select value from v$parameter where name ='processes'; --数据库允许的最大连接数 2.修改processes和sessions值 alter system set processes=1000 scope=spfile;
alter system set sessions=1105 scope=spfile;
3.重启数据库 shutdown immediate;
startup;
ORA-00020: maximum number of processes (40) exceeded模拟会话连接数满的更多相关文章
- ORA-00020: maximum number of processes (xxxx) exceeded 报错解决方法
转自:http://blog.51cto.com/lee90/1788124 今天java开发在连接线上的oracle大量导数据,一会提示连接不上数据库了.我本地用sqldeveloper也连接不上. ...
- ORA-00020: maximum number of processes (300) exceeded
SQL> select count(*) from v$session; COUNT(*)---------- 98 SQL> select count(*) from v$process ...
- ORA-00020:maximum number of processes (150) exceeded
异常的含义 超过最大的进程数 我们使用下面的语句可以查看与进程(process)的相关参数: 如上所示,这里的最大进程数是150. 问题可能存在的原因 1.应用程序在使用数据库连接池时,使用完成后没有 ...
- ORA-00020: maximum number of processes (800) exceeded
[oracle@db04-1 ~]$ sqlplus -prelim / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on 星期四 8月 31 ...
- Oracle 错误 maximum number of processes(150) exceeded 解决办法
网上很多同行应该都遇到过这个问题,百度一搜 千篇一律的处理办法,就是加大进程数. 但是我这边情况不一样,因为我的Oracle 11g是早上刚装的,跟本没人用,我用PLSQL链接照样说不能链接. 我就在 ...
- The maximum number of processes for the user account running is currently , which can cause performance issues. We recommend increasing this to at least 4096.
[root@localhost ~]# vi /etc/security/limits.conf # /etc/security/limits.conf # #Each line describes ...
- ORA-00019: maximum number of session licenses exceeded 超出最大会话许可数
ORA-00019: maximum number of session licenses exceededORA-00019: 超出最大会话许可数 Cause: All licenses ...
- ORA-00018: maximum number of sessions exceeded 超出最大会话数
ORA-00018: maximum number of sessions exceededORA-00018: 超出最大会话数 Cause: All session state obje ...
- Failed to connect to database. Maximum number of conections to instance exceeded
我们大体都知道ArcSDE的连接数有 48 的限制,很多人也知道这个参数可以修改,并且每种操作系统能支持的最大连接数是不同的. 如果应用报错:超出系统最大连接数 该如何处理? 两种解决办法: 第一,首 ...
随机推荐
- 转C++了
积极响应"某王"的号召,联赛之后转C辣!(好吧,其实是它拿着一把西瓜刀顶在我背后逼我转的)
- 感觉学java学到自己的瓶颈期了,各种框架乱七八糟,感觉好乱。该怎么办!?
通常我们都会有这样的一个疑问! 解决办法 这时候,你需要的是分清条理,重整知识架构 GitHub开源社区有一个这样的项目,我觉得非常好,很适合Java有基础但是想进阶提升的人. 项目简介 本期介绍的开 ...
- Dubbo的负载均衡策略&容错策略
dubbo的负载均衡策略 RandomLoadBalance 随机调用负载均衡 默认方式该类实现了抽象的AbstractLoadBalance接口,重写了doSelect方法,看方法的细节就是首先遍历 ...
- day41 Pyhton 并发编程04
内容回顾 socket 最底层的网络通信 所有的网络通信都是基于socket 进程 什么是进程? 是操作系统的发展过程中,为了提高cpu的利用率,在操作系统同时运行多个程序的时候,为了数据的安 ...
- day13 Pyhton学习
一.昨日内容回顾 生成器 本质就是迭代器 特点: 1.省内存 2.惰性机制 3.只能向前,不能反复 生成器函数 函数中包含yield. yield表示返回和return,分段执行一个函数 def fu ...
- Linux入门到放弃之五《用户管理》
用户管理 1.创建新用户user123,以此用户登陆系统,在tmp下创建文件test123: 2.修改test123文件的所有者为root,所属组也为root: 需要先切换为root用户 3.修改te ...
- JUC之线程池-三大方法-七大参数-四种拒绝策略
线程池:重点 三大方法 七大参数 四种拒绝策略 使用池化技术的理由: 我们的程序伴随着创建销毁线程十分浪费资源, 所以使用线程池,先创建线程,随用随取,用完归还 简单来说就是节约了资源. 使用线程池的 ...
- 二进制获取List中缺少的对象
今天,我需要做一个大数据页面,其中分了5类 大概就像这样:1类,2类,3类,4类,5类...... 但是由于数据没有足够多,所以现在统计出来的数据缺少了一到两类,或者更多,所以现在要找出在List在总 ...
- AWK实现把一个文件根据内容进行分组输出多个文件
AWK实现把一个文件根据内容进行分组输出多个文件 1.首先准备文件data.txt(分隔符为tab) 第一列省编码,第二列省名称...... 2.将该大文件根据第一列的省编码进行分组并输出到各个省编码 ...
- GoSDK的安装及环境变量配置 入门详解 - 精简归纳
GoSDK的安装及环境变量配置 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 10 / 29 转载请注明出处!️ 目录 GoSDK的安装及环境变量配置 入门详解 - 精简归纳 一.进入G ...