oracle如何释放连接 oracle释放连接数

如何释放ORACLE服务器过多的连接数感觉你似乎在问并发连接的问题 , 众所周知,为了防范蠕虫病毒的传播和攻击,Windows XP SP2将并发线程最多限制为10个 。SP2利用Messages动态链接库,来实时监控每个进程的并发线程数目,一旦它发现某进程的线程数超过10个,就会屏蔽掉部分线程 。
通过修改,可以把并发连接调到几百以上甚至更大,这个数字理论上是没有上限的 。
而作为服务器 , 从操作系统级,也会对并发连接数有个限制 , 因为每个连接要耗CPU和内存的,否则也会瘫痪 。而不同的系统,不同的服务器,可以支持的数量当然不同了 , 所以你这个问题没有实际意义,也没有准确答案 。
我实际测试,一台DELL四路四核 , 32G内存的服务器,并发500左右完全没有问题,再大也没有条件测试,而如果一台普通的低端服务器,不可能达到同一数量级对吧?
linux.oracle释放链接数MySQL数据库的默认最大连接数是:100,
对于多人开发的单体项目来说,虽然我们同时在用的连接不会超过10个,理论上100 绰绰有余,但是除了我们正在使用的连接以外,还有很大一部分 Sleep 的连接,这个才是真正的罪魁祸首 。
分析到了问题的根源,我们就需要对症下药,依次解决:
修改MySQL最大连接数量
首先查看当前 Mysql 最大连接数量是多少:
show variableslike'%max_connections%';
这里我已经修改过了,所以是 1000,没有改过的童鞋应该还是 100 ,
然后查看从这次 mysql 服务启动到现在 , 同一时刻并行连接数的最大值:
show statuslike'Max_used_connections';
对于 MySQL 的最大连接数设置,在首次配置的时候设置一个较大的数值,以后在使用的过程中 , 周期的查询 Max_used_connections 然后根据他的值和服务器的性能确定一个最适合当前项目的最大连接数
最大连接数的修改有两种方式
使用 sql 语句(立即生效,但服务器重启后失效):
setglobalmax_connections = 1000;
1修改 /etc/my.cnf.添加 max_connections = 1000 永久有效 。重启后生效
但更改最大连接数只能从表面上解决问题,随着我们开发人员的增多 , Sleep 连接也会更多,到时候万一又达到了 1000 的上限,难道我们又得改成 10000 吗?这显然是非常不可取的 。所以我们不仅要治标,还要治本 。杀掉多余的 Sleep 连接就是治本
杀掉Sleep连接
我们可以通过 show_processlist 命令来查看当前的所有连接状态
可以发现 , Sleep 的连接占了绝大多数 。
MySQL 数据库有一个属性 wait_timeout 就是 sleep 连接最大存活时间,默认是 28800 s , 换算成小时就是 8 小时 , 我的天呐!这也太长了!严重影响性能 。相当于今天上班以来所有建立过而未关闭的连接都不会被清理 。
执行命令:
showglobalvariableslike'%wait_timeout';
我们将他修改成一个合适的值,这里我改成了 250s 。当然也可以在配置文件中修改,添加 wait_timeout = 250 。这个值可以根据项目的需要进行修改,以 s 为单位 。我在这里结合 navicat 的超时请求机制配置了 240s 。
执行命令:
setglobalwait_timeout=250
如何释放Oracle服务器过多的连接数Oracle服务器连接数过多会当掉,把连接数过多的客户机网线拔出后,在远程Oracle上依然还会保留此用户的连接数,久久不能释放,上网查了下可以以下面方法解决 。
通过profile可以对用户会话进行一定的限制,比如IDLE时间 。
将IDLE超过一定时间的会话断开 , 可以减少数据库端的会话数量,减少资源耗用 。
使用这些资源限制特性,需要设置resource_limit为TRUE:
[oracle@test126 udump]$ sqlplus “/ as sysdba”
SQL*Plus: Release 10.2.0.1.0 - Production on Fri Oct 13 07:58:21 2006
Copyright (c) 1982, 2005, Oracle.All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning and Data Mining options
SQL show parameter resource
NAMETYPEVALUE
———————————— ———– ——————————
resource_limitbooleanTRUE
resource_manager_planstring
该参数可以动态修改:
SQL alter system set resource_limit=true;
System altered.
数据库缺省的PROFILE设置为:
SQL SELECT * FROM DBA_PROFILES;
PROFILERESOURCE_NAMERESOURCE LIMIT
——————– ——————————– ——– —————
DEFAULTCOMPOSITE_LIMITKERNELUNLIMITED
DEFAULTSESSIONS_PER_USERKERNELUNLIMITED
DEFAULTCPU_PER_SESSIONKERNELUNLIMITED
DEFAULTCPU_PER_CALLKERNELUNLIMITED
DEFAULTLOGICAL_READS_PER_SESSIONKERNELUNLIMITED
DEFAULTLOGICAL_READS_PER_CALLKERNELUNLIMITED
DEFAULTIDLE_TIMEKERNELUNLIMITED
DEFAULTCONNECT_TIMEKERNELUNLIMITED
DEFAULTPRIVATE_SGAKERNELUNLIMITED
DEFAULTFAILED_LOGIN_ATTEMPTSPASSWORD 10
DEFAULTPASSWORD_LIFE_TIMEPASSWORD UNLIMITED
PROFILERESOURCE_NAMERESOURCE LIMIT
——————– ——————————– ——– —————
DEFAULTPASSWORD_REUSE_TIMEPASSWORD UNLIMITED
DEFAULTPASSWORD_REUSE_MAXPASSWORD UNLIMITED
DEFAULTPASSWORD_VERIFY_FUNCTIONPASSWORD NULL
DEFAULTPASSWORD_LOCK_TIMEPASSWORD UNLIMITED
DEFAULTPASSWORD_GRACE_TIMEPASSWORD UNLIMITED
16 rows selected.
创建一个允许3分钟IDLE时间的PROFILE:
SQL CREATE PROFILE KILLIDLE LIMIT IDLE_TIME 3;
Profile created.
新创建PROFILE的内容:
SQL col limit for a10
SQL select * from dba_profiles where profile=’KILLIDLE’;
PROFILERESOURCE_NAMERESOURCE LIMIT
—————————— ——————————– ——– ———-
KILLIDLECOMPOSITE_LIMITKERNELDEFAULT
KILLIDLESESSIONS_PER_USERKERNELDEFAULT
KILLIDLECPU_PER_SESSIONKERNELDEFAULT
KILLIDLECPU_PER_CALLKERNELDEFAULT
KILLIDLELOGICAL_READS_PER_SESSIONKERNELDEFAULT
KILLIDLELOGICAL_READS_PER_CALLKERNELDEFAULT
KILLIDLEIDLE_TIMEKERNEL3
KILLIDLECONNECT_TIMEKERNELDEFAULT
KILLIDLEPRIVATE_SGAKERNELDEFAULT
KILLIDLEFAILED_LOGIN_ATTEMPTSPASSWORD DEFAULT
KILLIDLEPASSWORD_LIFE_TIMEPASSWORD DEFAULT
PROFILERESOURCE_NAMERESOURCE LIMIT
—————————— ——————————– ——– ———-
KILLIDLEPASSWORD_REUSE_TIMEPASSWORD DEFAULT
KILLIDLEPASSWORD_REUSE_MAXPASSWORD DEFAULT
【oracle如何释放连接 oracle释放连接数】KILLIDLEPASSWORD_VERIFY_FUNCTIONPASSWORD DEFAULT
KILLIDLEPASSWORD_LOCK_TIMEPASSWORD DEFAULT
KILLIDLEPASSWORD_GRACE_TIMEPASSWORD DEFAULT
16 rows selected.
测试用户:
SQL select username,profile from dba_users where username=’EYGLE’;
USERNAMEPROFILE
—————————— ——————–
EYGLEDEFAULT
修改eygle用户的PROFILE使用新建的PROFILE:
SQL alter user eygle profile killidle;
User altered.
SQL select username,profile from dba_users where username=’EYGLE’;
USERNAMEPROFILE
—————————— ——————–
EYGLEKILLIDLE
进行连接测试:
[oracle@test126 admin]$ sqlplus eygle/eygle@eygle
SQL*Plus: Release 10.2.0.1.0 - Production on Fri Oct 13 08:07:13 2006
Copyright (c) 1982, 2005, Oracle.All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning and Data Mining options
SQL select username,profile from dba_users where username=’EYGLE’;
USERNAMEPROFILE
—————————— ——————————
EYGLEKILLIDLE
当IDLE超过限制时间时,连接会被断开:
SQL select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual;
TO_CHAR(SYSDATE,’YY
——————-
2006-10-13 08:08:41
SQL select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual;
select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual
*
ERROR at line 1:
ORA-02396: exceeded maximum idle time, please connect again
如何用.net程序释放oracle连接通过profile可以对用户会话进行一定oracle如何释放连接的限制oracle如何释放连接,比如IDLE时间 。
将IDLE超过一定时间的会话断开oracle如何释放连接 , 可以减少数据库端的会话数量,减少资源耗用 。
使用这些资源限制特性,需要设置resource_limit为TRUE:
[oracle@test126 udump]$ sqlplus "/ as sysdba"
SQL show parameter resource
NAMETYPEVALUE
------------------------------------ ----------- ------------------------------
resource_limitbooleanTRUE
resource_manager_planstring
该参数可以动态修改:
SQL alter system set resource_limit=true;
数据库缺省的PROFILE设置为:
SQL SELECT * FROM DBA_PROFILES;
PROFILERESOURCE_NAMERESOURCE LIMIT
java怎么释放oracle连接数释放连接只能是让一些连接oracle如何释放连接的进程断开连接 。
查询哪个user的连接数最多oracle如何释放连接,先跟oracle如何释放连接他们的用户说,不能连接这么多的进程,让他们释放一些 , 如果释放了,系统正常了,那么就限制每个用户连接数,不让他们连接这么多 。
如果不释放 , oracle如何释放连接你就在操作系统层面把他们那些进程kill掉,有人来找就让他们对系统夯住负责,然后限制用户的连接数 。
不过这么操作的风险还是不小的,自己掂量 。
关于oracle如何释放连接和oracle释放连接数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读