Как изгнать или «убить» открытые соединения, когда они превышают фиксированный лимит (используя dbcp w / oracle) - PullRequest
1 голос
/ 07 сентября 2010

Кто-нибудь знает, как изгнать или убивать открытые соединения (используется или нет, это не имеет значения), если количество соединений превышает установленный предел (например, maxActive) В настоящее время я использую DBCP от Apache под Sun Один 6.1. Заранее спасибо!

1 Ответ

0 голосов
/ 08 сентября 2010

ALTER SYSTEM KILL SESSION 'nnn, mmmm' может убивать сеансы (при этом nnn - это SID, а mmmm - SERIAL #). Вы можете просмотреть v $ session seconds_in_wait и событие «SQL * Net message from client» для сеансов, которые ничего не делали в течение некоторого времени. Это событие в основном говорит: «Я жду, когда клиент скажет мне, что делать дальше».

Также убедитесь, что в сеансе нет открытой транзакции

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;

Хотя это уродливое решение.

...