Oracle超出最大连接数问题及解决

用过Oracle的应该都熟悉如何查看和设置Oracle数据库的最大连接数。这里就再啰嗦一遍。

查看当前的连接数,可以用:select count(*) from v$process;
设置的最大连接数(默认值为150)select value from v$parameter where name = ‘processes’;
修改最大连接数alter system set processes = 300 scope = spfile;

都知道,当数据库最大连接数不够时会出现客户端连接间歇性失败,报错ORA-12519。设置大点一般就可以了。但是做大型项目的时候还是会遇到一些不正常的问题,比如:设置最大连接数800,但是正常连接200多个就会报错,这也是我在一次面试中得知的。回来因为自己的垃圾机器上没有装Oracle,就查了些资料,发现还真的有这个问题,不过不是什么难题,貌似很多人遇到过,看来我们真的做项目太少了吧,顶多同时测试的也就十多个人。

网上搜集到有此类问题的描述,如下。

服务器IBM XSERVER,内存:4G
oracle 数据库配置的主要参数如下:

processes integer 500
sessions integer 585
pga_aggregate_target big integer 350M
sga_max_size big integer 1256M
sga_target big integer 1152M
shared_pool_size big integer 400M
large_pool_size big integer 16M

看样子挺不粗的配置,但是就这样默认情况还是会出现连接数不够的现象。数据库配置的连接数是500个,但是现在当Oracle的连接数达到120个时候,其他的客户端就无法再连接上Oracle服务器了,报个错:ORA-12518: TNS: 监听程序无法分发客户机;但是已经连接上数据库的应用还可以正常应用,就是其他没连上的就再也连不上了,除非已有的连接有退出的,其他的才能再联上,就是可连接的总数是120个;

有网友说是在可以在listener.ora中加入一行: direct_handoff_ttc_ =off,经测试此方法依旧不行;

这期间我尝试着把pga_aggregate_target 改成200或者500等,结果是一样的。也尝试着把sga_target改成800m后,结果数据库就起不来了,提示说要不能小于1024m。

后来查到有可能是oracle 10g for win32的一个bug,上网下了补丁,打完补丁后的版本是:10.2.0.3;也曾怀疑是不是windows 2003的tcp连接数不够,上网查说好像是有这毛病,下了个2003的补丁,把tcp连接数扩到了1000,结果能够达到可以有250个并发连接,但是再多就又连不上了。

现在就是不太清楚究竟是什么参数配置的不合适(不管是oracle10g的,还是windows 2003的),才会造成实际上没有达到oracle设置的最大连接数时就不能连接了。

最后,怀疑是不是windows 2003(32位)的问题,于是就装了个64位的windows 2003,同样版本的oracle 10g,装好后就把连接数process参数配置成800,然后做连接测试,一直可以有800个session连接上来,到现在为止,可以大致总结出症结所在了,就是windows 2003 server(32位)的操作系统,在安装oracle 10g(10.2.0.1-10.2.0.3)时有问题,连接数不能达到系统配置的那么大,可以采用64位的替代。找到问题根源了,就可以想到究竟为什么windows
2003 server(32位)的操作系统和oracle 10g数据库连接数会有限制,修改一下2003的配置或者oracle 10g的配置, 就可解决掉这个问题。

解决方案:
A.修改Oracle参数

1、原有参数
#pga_aggregate_target=67108864
#processes=500
#sessions=555
# pga_aggregate_target此参数是扩大并发连接数占用内存大小。
# 可调整此参数,放大或缩小,同时影响并发数量。
# 公式: 约=可按照并发数量*4M
pga_aggregate_target=720M
# processes、sessions是扩大并发连接数,是同时使用。
# 公式: sessions = processes *1.1 +5
processes=600
sessions=665
2、在监听参数文件LISTENER.ORA 文件中增加参数
direct_handoff_ttc_listener = off
3、重新启动数据库服务。

B.修改windows配置

1、修改Windows系统中Boot.ini文件
/3GB /PAE
说明:修改操作系统中Boot.ini文件,可以使Oracle使用更多的内存空间。
2、修改用户组策略中锁定内存页大小权限。
参数修改完毕问题解决。
3、重启计算机

时间: 2024-08-30 16:44:32

Oracle超出最大连接数问题及解决的相关文章

数据库服务器-什么情况下会出现oracle数据库自身连接超出最大连接数 ----急急急!!!

问题描述 什么情况下会出现oracle数据库自身连接超出最大连接数 ----急急急!!! 5C 这些天一直被这个问题困扰,oracle连接超出最大连接数.原以为是tomcat程序还有没释放的连接,但是经过追踪审查之后发现不是程序的问题,而是数据库本身连接数异常多.下面是我操作过程. 重启oracle服务后,登陆sqlplus.SQL> select count(*) from v$session;SQL> show parameter processes;SQL> show parame

Oracle出现超出打开游标最大数的解决方法_oracle

本文实例讲述了Oracle出现超出打开游标最大数的解决方法.分享给大家供大家参考,具体如下: Java代码在执行conn.createStatement()和conn.prepareStatement()的时候,实际上都是相当与在数据库中打开了一个cursor.尤其是,假如你的createStatement和prepareStatement是在一个循环里面的话,就会非常轻易出现这个问题.因为游标一直在不停的打开,而且没有关闭. 一般来说,我们在写Java代码的时候,createStatement

windows 2003服务器远程桌面超出最大连接数解决办法

解决win2003远程超出最大连接数故障的方法 方法一: 治标 但出现远程超出最大连接数时候,我们可以这样来处理: 步骤: 开始->运行->cmd->mstsc /console /v:服务器IP:远程端口 ->输入服务器账号密码登录服务器 方法二:治本 我门通过配置组策略来限制连接时间 开始->运行->gpedit.msc->计算机配置->管理模板->windows组件->终端服务->会话 右边窗口选择 为断开的会话设置时间限制 ->

mysql超出最大连接数解决方法

遇到mysql超出最大连接数,相信不少人第一反应就是查看mysql进程,看有没有慢查询,当然这个做法是完全正确的! 但是很多时候真正的问题不在这里. 今天有遇到同样的问题,一味查看mysql进程和慢查询日志,无果. 后来老大提点了一下,查看一下nginx日志,发现有一两个访问执行时候比较长,然后使用top命令查看了一下服务器负载,惊了,居然超高! 最后发现原来有一台web分流主机挂了,导致另外几台web主机负载增高,从而导致了php-fpm的执行效率降低. 那么这跟mysql有什么关系呢?原因很

windows2003远程桌面超出最大连接数强制登录方法

远程桌面超出最大连接数时可以使用以下命令强制登录,在命令行中执行: 用法:mstsc /console /v:IP:Port    |   mstsc /v ip:port  /console 实例:mstsc /console /v:192.168.0.1:3389 如果目标主机修改了终端端口,将Port改为修改后的端口即可. 其它的解决办法 一.登陆上去后,打开任务管理器-用户,注销其它用户. 二.如果可以Telnet,不管用什么方式,反正可以得到服务器的Shell. 上去后先看登陆的用户,

我的android程序方法超出了65535就如何解决了,求解???

问题描述 我的android程序方法超出了65535就如何解决了,求解??? 1C 我的android程序方法超出了65535就如何解决了,求解??? 解决方案 Android 解决65535的限制 使用android-support-multidex解决Dex超出方法数的限制问题让你的应用不再爆棚 解决方案二: 分解成多个apk,或者jar 解决方案三: http://blog.csdn.net/x_i_a_o_h_a_i/article/details/46544341 解决方案四: 很明显

ORACLE常见错误代码的分析与解决(二)

oracle|错误|解决 ORACLE常见错误代码的分析与解决(二)   文章源自于  世纪易网   ORA-01578:Oracle data block corrupted(file # num,block # num)   产生原因:当ORACLE访问一个数据块时,由于1.硬件的I/O错误:2.操作系统的I/O错误或缓冲问题:3.内存或paging问 题:4.ORACLE试图访问一个未被格式化的系统块失败:5.数据文件部分溢出等上述几种情况的一种引起了逻辑坏块或者 物理坏块,这时就会报OR

ORACLE常见错误代码的分析与解决(三)

oracle|错误|解决 ORACLE常见错误代码的分析与解决(三)     文章源自于  世纪易网   ORA-00600:internal error code,arguments:[num],[?],[?],[?],[?]   产生原因:这种错误通常为ORACLE的内部错误,只对OSS和ORACLE开发有用.ORA-600的错误经常伴随跟踪文件的状态转储 (系统状态和进程状态),系统状态存储将包括ORACLE RDBMS持有的当前对象的信息,进程状态转储则将显示特殊进程持 有的对象,当进程

oracle10错误-linux5.5安装oracle出现错误!请高手解决。急

问题描述 linux5.5安装oracle出现错误!请高手解决.急 oracle运行到最后一步报错,oracle Database configuration Assistant Failed INFO: Starting to execute configuration assistantsINFO: Command = /home/oracle/product/10/bin/dbca -progress_only -createDatabase -templateName General_P