开发者

How to evict or "kill" open connections when these are above a fixed limit (using dbcp w/ oracle)

Does anyone know how to evict or kill open connections (in use or 开发者_如何学JAVAnot it doesn't matter) if the number of connections is above of a fixed limit (e.g. maxActive) Currently I'm using DBCP from Apache under a Sun One 6.1. Thanks in advance!,


ALTER SYSTEM KILL SESSION 'nnn,mmmm' can kill sessions (with nnn being the SID and mmmm the SERIAL#). You can look at v$session seconds_in_wait and with an event of 'SQL*Net message from client' for sessions that haven't been doing anything in a while. That event basically says "I'm waiting for a client to tell me what to do next."

Also make sure the session doesn't have an open transaction

select sid, serial# from v$session 
where event = 'SQL*Net message from client'
and saddr not in (select ses_addr from v$transaction)
order by seconds_in_wait desc;

It's an ugly solution though.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜