问题描述:在正式生产环境中,有的库建的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. Github 太狠了,居然把 "master" 干掉了!

    前段时间栈长有看到 Github 和 master 分支变更的新闻,当时没有注意细节,直到今天我创建仓库时: 看了半天感觉有点不对劲啊... 怎么 master 不见了,之前默认主干分支名称都是叫 m ...

  2. 把python文件打包成可执行文件(win10实验成功)

    总是有人来找我帮看下工单状态,又懒得写页面展示出来,干脆打包成exe文件好啦 打包很简单,难点在于安装pyinstaller这个依赖包,主要是网络问题~ 我也是参考别人的博文,别人的文章写得很详细,我 ...

  3. Linux操作系统(第二版)(RHEL 8/CentOS 8)——勘误表

    Linux操作系统(第二版)(RHEL 8/CentOS 8)--勘误表 http://www.tup.tsinghua.edu.cn/booksCenter/book_08172501.html 本 ...

  4. 用ip xfrm搭ipsec隧道

    拓扑如下 基本的IP配置就不说了,直接写重点,在LS上配置 #配置SA ip xfrm state add src 194.168.10.4 dst 194.168.10.5 proto esp sp ...

  5. 2014年 实验三 B2B模拟实验(一)

    [实验目的] ⑴.熟悉企业网络银行和电子证书的应用 ⑵.通过B2B模拟实验掌握B2B的交易过程 [实验条件] ⑴.个人计算机一台 ⑵.计算机通过局域网形式接入互联网 (3).电子商务模拟实验室软件包. ...

  6. <二分查找+双指针+前缀和>解决子数组和排序后的区间和

    <二分查找+双指针+前缀和>解决子数组和排序后的区间和 题目重现: 给你一个数组 nums ,它包含 n 个正整数.你需要计算所有非空连续子数组的和,并将它们按升序排序,得到一个新的包含 ...

  7. c++ 通用单例类声明

    //单例类定义#define CLASS_INSTANCE_DEF(className) \public: \ static className* GetInstance() \ { \ static ...

  8. hbase的Java基本操作

    hbase的Java基本操作 建表,建列簇操作 private static Connection connection; private static Admin admin; public sta ...

  9. JDBC Statement PrepareStatement

    1.JDBC中Statement接口和PrepareStatement接口关系与区别 Statement接口不能使用占位符?,需要拼sql,所以没有setInt,setString等方法:Prepar ...

  10. Vulkan Driver for VC4(Raspberry Pi 3b) base on mesa

    这是一篇关于在raspberry Pi 3b上移植实现vulkan 驱动的文章. 经过一段时间的代码搬运,终于实现了零的突破,可以在树莓派3B上运行Vulkan triangle/texture.当然 ...