问题描述:在正式生产环境中,有的库建的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模拟会话连接数满的更多相关文章

  1. ORA-00020: maximum number of processes (xxxx) exceeded 报错解决方法

    转自:http://blog.51cto.com/lee90/1788124 今天java开发在连接线上的oracle大量导数据,一会提示连接不上数据库了.我本地用sqldeveloper也连接不上. ...

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

    SQL> select count(*) from v$session; COUNT(*)---------- 98 SQL> select count(*) from v$process ...

  3. ORA-00020:maximum number of processes (150) exceeded

    异常的含义 超过最大的进程数 我们使用下面的语句可以查看与进程(process)的相关参数: 如上所示,这里的最大进程数是150. 问题可能存在的原因 1.应用程序在使用数据库连接池时,使用完成后没有 ...

  4. 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 ...

  5. Oracle 错误 maximum number of processes(150) exceeded 解决办法

    网上很多同行应该都遇到过这个问题,百度一搜 千篇一律的处理办法,就是加大进程数. 但是我这边情况不一样,因为我的Oracle 11g是早上刚装的,跟本没人用,我用PLSQL链接照样说不能链接. 我就在 ...

  6. 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 ...

  7. ORA-00019: maximum number of session licenses exceeded 超出最大会话许可数

    ORA-00019: maximum number of session licenses exceededORA-00019: 超出最大会话许可数 Cause:       All licenses ...

  8. ORA-00018: maximum number of sessions exceeded 超出最大会话数

    ORA-00018: maximum number of sessions exceededORA-00018: 超出最大会话数 Cause:       All session state obje ...

  9. Failed to connect to database. Maximum number of conections to instance exceeded

    我们大体都知道ArcSDE的连接数有 48 的限制,很多人也知道这个参数可以修改,并且每种操作系统能支持的最大连接数是不同的. 如果应用报错:超出系统最大连接数 该如何处理? 两种解决办法: 第一,首 ...

随机推荐

  1. [KMP]字符串匹配算法

    算法介绍: KMP是一种用来处理字符串匹配问题的算法,给你两个字符串A.B,让你回答B是否为A的子串,或者A中有多少子串等于B. 这题最暴力的做法是:枚举A中与B相等的子串的左端点,再判断是否与B相等 ...

  2. 跟着动画学习 TCP 三次握手和四次挥手

    TCP三次握手和四次挥手的问题在面试中是最为常见的考点之一.很多读者都知道三次和四次,但是如果问深入一点,他们往往都无法作出准确回答. 本篇尝试使用动画来对这个知识点进行讲解,期望读者们可以更加简单地 ...

  3. dict, hash

    dict: dictKey -- > dictVal example: dictEntry *dictFind(dict *d, const void *key)     Key is like ...

  4. 关于android和Linux的一些问题

    1.Android为什么选择java? 由于java虚拟机,实现软件层的编程与硬件无关性(无需进行特定编译或平台配置). 2.Android和Linux内核区别? Android上的应用软件运行在da ...

  5. Vue 全宇宙最浪 VSCode 配置、插件

    别人的那一堆配置.插件我就不写了- 首先进入官网下载并安装. 基本配置 在编译器 文件 >> 首选项 >> 设置,可以拷贝相面的选项后搜索相关配置 设置制表符等于空格数为 2: ...

  6. centos 7.0 更改启动环境/启动进入图形界面/命令行模式

    当前我桌面模式 systemctl set-default multi-user.target ln -sf /lib/systemd/system/multi-user.target /etc/sy ...

  7. python 不定长参数

    1 #不定长参数 * 元祖 ** 字典 2 def item(a,b,*c,**d): 3 print(a) 4 print(b) 5 print(c) 6 print(d) 7 8 item(11, ...

  8. C语言必踩神坑,世上本没有坑,摔的人多了,也就有了坑!

    这是一个伤心的故事,有多少小伙伴在写C语言代码时遇到过的情景! 提问:C语言中,未初始化的局部变量到底是多少? 答案往往是: 与编译器有关: 可能但不保证初始化为0: 未确定. 总之,全部都是些一本正 ...

  9. 不要以为Bug写的好就是好程序员,其实这只占不到15%!

      最近和一位从事多年架构工作的技术哥们见面,聊到了近期面试程序员的一些经历,谈到了"如何判断程序员水平高低"这个话题,颇有些感触,觉得有价值,因此花了些时间整理.分享给大家. 正 ...

  10. "计算机科学"与"软件工程"有什么区别?哪个专业更适合你?

    "计算机科学和软件工程专业有什么不同?" 以及- "如果我想成为软件工程师,我应该选择计算机科学还是软件工程专业?" 在这篇文章中,我会回答这个问题,并分享一些 ...