系统遇到过几次这种问题,一个系统申请的session数过大,导致数据库进程数满,无法连接的问题。

pl sql develope 报的错误是:ORA-12170:TNS:链接超时

oracle用户登录服务器,使用dba身份进入sqlplus:

sqlplus / as sysdba

报错信息如下:

SQL*Plus: Release 11.2.0.1.0 Production on Thu Feb 1 18:34:46 2018

Copyright (c) 1982, 2009, Oracle. All rights reserved.

ERROR:
ORA-00020: maximum number of processes (1000) exceeded

线程数超过最大值1000了。

由于oracle 线程数超过最大,所以不能登录了。(当然,sqlplus / nolog 是可以登的,但是不能用)

1、这个时候,就只有关闭oracle 的监听:  

lsnrctl stop   # start 启动  status 查看状态

关闭了监听,就不会有新的用户登录进来,也不会生成新的session,占用process了

稍等一下,就可以使用sqlplus / as sysdba 登录了(oracle 会保存一些已经关闭的session,这些session会被标记为“kill”状态,2小时候清除,所以关闭监听后,一会就会,process 使用就会掉一点下来)

2、这个时候,执行SQL:

select count(1) from v$session;

查看session使用情况。

3、执行SQL:

select machine,count(1)coun from v$session group by machine order by 2 desc

查看session数最多的机器(也可以换成user/program)

4、这样,就找到占用session多的机器、用户、程序。然后执行如下SQL:

select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.machine = 'venn01';

注意最后一个条件,换为上一步查出来的数据,字段也要改下

spid即为占用session最多的机器、用户、程序的线程号(同系统进程号)

5、执行:  

kill -9 spid

可杀掉session(见效快),参见我的博客:关于oracle的锁表解决session marked for kill

6、这个时候,就可以使用pl sql developer登录了,执行SQL

select 'kill -9 '||spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.machine = 'venn01';

7、可以打印出kill 命令,直接copy 一列,粘贴到服务器上执行,就搞定了。

科普一下oracle的session和process

session : 指用户连接的session

process : 指session执行的线程

session 可以从 v$session 表查看,process 可以从v$process 表查看

session和process 表的关系为:

select s.sid,p.PID,s.*,p.*
from v$session s,v$process p
where s.paddr=p.addr

session表中保存了process的地址。

select * from v$parameter
where name like 'sessions' or name like 'processes'

v$parameter 表可以查看session和process的配置,建议配置session 略大于process,可以修改(重启生效):

SQL> alter system set processes=500 scope=spfile;
SQL> alter system set sessions=555 scope=spfile;

也可以这样 查看:

SQL>show parameter processes;
SQL>show parameter sessions;

oracle 大量连接导致数据库不能登录的更多相关文章

  1. oracle远程连接服务器数据库

    oracle远程连接数据库,需要配置本地服务,具体步骤如下: 1. 2.添加新的服务 3.输入服务名(例如:orcl3即服务器数据库名) 4.选择TCP协议 5.输入服务器IP(192.268.10. ...

  2. ORACLE 配置连接远程数据库

    ORACLE配置tnsnames.ora文件实例 客户机为了和服务器连接,必须先和服务器上的监听进程联络.ORACLE通过tnsnames.ora文件中的连接描述符来说明连接信息.一般tnsnames ...

  3. 3月9日(用 DBHelper 工具连接 mysql 数据库 实现登录验证)

    一. 用DBHelper 与mysql 连接 实现最简单的登录验证. (1)新建 web project ----->选择src导入 DBHelper 工具包-------->选择web  ...

  4. 修改oracle系统参数spfile导致数据库无法启动解决

    错误示范: SQL> alter system set nls_date_format='yyyy-mm-dd 24hh:mi:ss' scope=spfile;System altered.我 ...

  5. oracle动态采样导致数据库出现大量cursor pin s wait on x等待

    生产库中,突然出现了大量的cursor pin s wait on x等待,第一反应是数据库出现了硬解析,查看最近的DDL语句,没有发现DDL.那么有可能这个sql是第一次进入 在OLTP高并发下产生 ...

  6. Java连接SqlServer2008数据库(转)

    Java连接SqlServer2008数据库 首先下载JDBC:下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=21599 下 ...

  7. Java连接SqlServer2008数据库

    Java连接SqlServer2008数据库 首先下载JDBC:下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=21599 下 ...

  8. 安装好Oracle和PLSQLDeveloper后,PLSQLDeveloper登录时没有可选数据库和连接为问题

    1.登录PL/SQL Developer 这里省略Oracle数据库和PL/SQL Developer的安装步骤,注意在安装PL/SQL Developer软件时,不要安装在Program Files ...

  9. ADO.NET连接到数据库(oracle)

    本文摘抄于http://www.cnblogs.com/luluping/archive/2009/10/13/1582737.html,如有侵权,请联系博主. OracleConnection 对象 ...

随机推荐

  1. 使用ffmpeg解码 需要注意的内存泄漏问题

    说说项目中遇到的两点失误: 1. AVFrame结构,av_frame_alloc申请内存,av_frame_free释放内存.容易混淆的是av_frame_unref,它的作用是释放音视频数据资源, ...

  2. POJ-1426.Findthemultiple.(BFS)

    一开始模拟了一波大数取余结果超时了,最后改成long long过了emmm... 本题大意:给出一个200以内的数n,让你找出一个m使得m % n == 0,要求m只有1和0组成. 本题思路:BFS模 ...

  3. Delphi:MSBuild编译dproj工程

    Delphi之命令行编译工程,传统是用dcc32来编译的,它需要设置一大堆参数. 自Delphi 2007以后,支持MSBuild编译,它直接编译.dproj工程文件,所有编译需要的东西,都已在其中设 ...

  4. 【环境配置】本地配置sublime text以及和远程linux设置sftp

    工具: sublime text 2(mac版) 远程linux(centos 7系) securCRT(for mac) [本地安装并配置securCRT(for mac)] 关于配置: 1.解决终 ...

  5. java web获取客户端外网ip和所在区域

    @参考文章1.@参考文章2.@参考文章3.@参考文章4,@之前同事的项目 controller @Controller @RequestMapping("/home") publi ...

  6. (转)css选择器及其优先级

    文章主要介绍什么是CSS选择器,CSS选择器的分类以及CSS选择器的优先级三部分内容,希望能够帮助到正在学习CSS的童鞋,有什么不足的地方欢迎大家批评指正. 一.什么是CSS选择器? CSS选择器又被 ...

  7. linux-ubuntu 安装配置Redis

    >wget http://download.redis.io/releases/redis-3.2.6.tar.gz #下载redis源码包 >tar -zxvf redis-3.2.6. ...

  8. C#中DllImport用法

    http://blog.csdn.net/u011981242/article/details/52622923 http://www.jb51.net/article/46384.htm 读取身份证 ...

  9. 梦殇 chapter one

    梦殇 chapter one 星梦 天空中飘着几片云,喝着小鸟的欢呼声,这一切似乎显得愈加可爱了. 不觉间已经到了2013年,错过的12年,似乎在向我们招手,不知道远方的朋友们,你们还好吗? 是否也会 ...

  10. Java并发-UncaughtExceptionHandler捕获线程异常信息并重新启动线程

    Java并发-UncaughtExceptionHandler捕获线程异常信息并重新启动线程 一.捕获异常并重新启用线程 public class Testun { public static voi ...