oracle.dataaccess 连接池,原来是它(Oracle.ManagedDataAccess.Client)——再说ORA-12516故障解决...

最近一直和ORA-12516报错作斗争。接着我之前分享的一篇文章说起  http://www.linuxidc.com/Linux/2015-06/119139.htm,当时通过kill进程的方法临时解决了问题,但是根本问题没有找到——为什么设备会产生大量连接?说到底,这个问题当时并没有解决,并且继续“折磨”了我将近一个月。这段时间,不断地有人找我——数据库连不上了!!!问题到底出在哪儿了呢。

下面和大家分享一下解决过程,希望对大家有所借鉴。

开发环境

操作系统:Windows Server 2008 R2  Standard

数据库:Oracle 10g(10.2.0.4) 64bit

频繁报错ORA-12516,初步分析

最近ORA-12516错误频出,我也是不胜其烦。但是每次都找不到根本原因,只能停监听、杀进程或者直接关闭客户端程序。

复述一下故障现象:连接数据库报错,提示“ORA-12516”错误——“ORA-12516: TNS: 监听程序无法找到匹配协议栈的可用句柄”。

一直很稳定的系统架构,为什么突然不行了呢?

数据库processes参数使用的默认值150,相应的sessions为170,;

我们采用C/S架构,其中Client数量并不多,也就20台左右,所以正常情况下sessions数量为40左右,其中包括16个数据库内部连接。

可现在,sessions数量动辄就到了130~140,直接导致ORA-12516报错。

下面贴一个当时的查询结果:

SQL> set pagesize 150

SQL> set linesize 200

SQL> col username for a10

SQL> col terminal for a20

SQL> col program for a20

SQL> select username,program,terminal,count(*) from v$session group by rollup(username,program,terminal);

USERNAME PROGRAM TERMINAL COUNT(*)

---------- -------------------- -------------------- ----------

......此处省略内容

ORACLE.EXE (q000) 1

ORACLE.EXE (q001) DBSERVER 1

ORACLE.EXE (q001) 1

16

SYS sqlplus.exe DBSERVER 1

SYS sqlplus.exe 1

SYS 1

HOEGH HOEGH.exe Client7 1

HOEGH HOEGH.exe CLIENT2 95

HOEGH HOEGH.exe Client3 1

HOEGH HOEGH.exe Client4 2

HOEGH HOEGH.exe CLIENT5 28

HOEGH HOEGH.exe Client6 1

HOEGH HOEGH.exe 128

HOEGH 128

145

可以看出,CLIENT2 和CLIENT5 两个终端的连接数分别为95和28,肯定有问题。

查询sessionÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值