|
|
|
Cессии
|
|||
|---|---|---|---|
|
#18+
Есть сервак с базой, есть клиенты Forms. Клиенты работают, блокируют при этом какие-то строки. Все нормально. Пока тупой юзер не снимет клиентское приложение - или ошибка, или ему показалось что оно зависло (хотя на самом деле коммитило или ждало пока какие-то строки осободятся - не важно). Вобщем снимает этот гад приложение. А сессия остается. Естетсвенно когда он в следующий раз его запускат и ломится редактировать те же ресурсы ему говорят что они заблокированы. Сессия то висит. Какие есть решения проблемы? P.S. описать в лисенере таймаут? а не будут ли тогда работающие клиенты отваливаться? Ну вышел там юзер курнуть на 10 мин - а связь оборвалась по таймауту! Это не решение :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 17:42 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
1. Когда коммитит(хотя сам по себе сл.долгий коммит сигнал админу) или ждет должно появляться соот. предупреждение 2. Когда юзер выходит их приложения соот.триггер должен "кричать", что есть его приложения блокировки... 3. Ну уж если узер совсем тупой - там можно(нужно Ж)) ) делать грубые...роллбэки и киллед сешны... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 18:04 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
1) вопрос не по организации интерфейса 2) юзер тупой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 18:22 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
Вроде в v$session, когда аварийно вышли, отмечается INACTIVE (но еще не KILLED)? Не через это разве решают этот вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 18:23 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
а чтобы чего-то делать нужно сидеть за сервером... вопрос бы не вставал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 18:23 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
все сессии которые в данные момент не выполняют SQL - INACTIVE... просто законнектившийся SQL+ 'ом юзер - он тоже inactive ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 18:40 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
>>> Ну вышел там юзер курнуть на 10 мин - а связь оборвалась по таймауту! Computer i sqlnet konechnogo usera ne proveriaet prisutstvie ego za stolom. U nego obicho s glazami ochen ploho. Sqlnet NE proveriaet ACTIVNOST user, on tolko proveriat NALICHIE (tehnicheski) prilogeniya priconnekchennogo k base (bolee prosto - proveriae na urovne otkritogo soketa). Posemu user moget gulyat gde ugodno vplot do sleduiuschego goda. expire_time ne vkluchitsia. On vkluchaetcia tolko NA SERVERE i tolko esly: -- sqlnet CLIENTA poterial link(soket) s prilogeniem klienta. -- sqlnet SERVERA poterial link(soket) s SQLNET klienta. -- TCP level SERVERA dal signal (posle tcp_keep_alive_time) chto poteriana sviaz s MASHINOY clienta (tehnicheski) na urovne tcp/ip protokola. A aktivnost i vremya prostoya usera reguliruetsya na urovne ego profile parametrom idel_time. Posemu parametrom EXPIRE_TIME v sqlnet.ora mogno smelo polzovatsya. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 18:43 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
все сессии которые в данные момент не выполняют SQL - INACTIVE это вроде и есть те 10 минут неактивности (лень проверять sorry, excuse если не прав), но вроде и не только (кажется и аборты там же) - к тому же есть исключение вроде во всех RAD EAbort (не когда питание отключилось, а когда диспетчер ОС закрыл приложение) и в обработчике можно убить сессии (если это автоматически не делается) ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 18:57 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
а что за EXPIRE_TIME ? Oracle 8.0.5 В документации что-то ничего не нахожу... или можно ограничится одним IDLE? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 19:25 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
>>>> все сессии которые в данные момент не выполняют SQL - INACTIVE это вроде и есть те 10 минут неактивности (лень проверять sorry, excuse если не прав), но вроде и не только (кажется и аборты там же) V korne ne verno. Vnimatelno pochitay prididuschiy otvet. ----------------------------------------------------------------------------------------------- EXPIRE_TIME --> parametr konfiguracionnogo faila SQLNET.ORA on opisn v dokumentacii po sqlnet, a ne v dokumentacii po serveru. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 19:38 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
Вот эксперимент. Юзер A - практически суперюзер, владелец всех используемых объектов. Юзер B имеет права на них (select/insert/update/delete). Юзеру B в профайле поставлен IDLE - 1 минута. Далее запускаем SQL Plus под юзером A и делаем SELECT * FROM TableA FOR UPDATE; Запускаем SQL Plus под юзером B и делаем SELECT * FROM Table B FOR UPDATE; SELECT * FROM TableA FOR UPDATE. Консоль под юзером B "повисает", маздай считает что приложение не отвечает. Отлично - реальная модель. Дальше жестко снимаем консоль ту что под юзером B. Смотрим на сервере - две сессии - под юзером A INACTIVE, под юзером B - ACTIVE. ждем минуту - результата нет. УЖЕ ФИГНЯ. IDLE не работает. Дальше в консолт с юзером A делаем commit, сервак шуршит и сессия юзера B исчезает. Что теперь скажете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 20:12 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
>Что теперь скажете? странно, у меня нормально отрабатывает - если убил (закрыл окно сессии B), то несколько секунд сессия пропадает из v$session. Никаких IDLE не устанавливал. Клиент: SQL*Plus 8.1.7.0.0 /Windows NT Сервер: 8.1.7.4 /Linux ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 20:35 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
сорри, я пробовал с одним и тем же юзером, но в разных сессиях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 20:37 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
да наверное без разницы.... тем более вопрос - в чем фишка? :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 20:43 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
Mi govorim o dvuh principialno raznih poniatiyah: 1 -- IDLE_TIME v profile --> vremia neaktivnosti servernogo processa usera (INACTIVE SESSION) 2 -- EXPIRE_TIME v sqlnet.ora --> timeout tehnicheskoy neaktivnosti soketa prilogeniya v setke V osnovnom poste --> Вобщем снимает этот гад приложение (t.e ubivaetsya soket sessii na urovne protokola) sprashivalos kak imenno borotsia s etim ( no ne vremenem INACTIVE SESSION) eto kogda polzovatel poshel perekurit no ostavil activnoy Forms na mashine clienta. Tak vot podobnie problkemy reshautsya pri pomoschy EXPIRE_TIME no nikak ne IDLE_TIME v profile. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 20:44 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
Короче.... Ставлю на сервере и клинтах в sqlnet.ora EXPIRE_TIME = 10 Дальше, если юзер запустил приложение и ушел курить (сессия INACTIVE) то все нормально, хоть он до завтра будет курить, связь не порвется - правильно понял? Дальше если юзер загрузил тачку, т.е. сделал долгий save (с постингом, ожиданием разблокировки строк и т.д.) и в этот момент снял приложение - то что? что будет? сессия при этом пока что остается на сервере как ACTIVE и блокирует ресурсы... Туплю я наверное... объясните мне еще раз, плз :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 20:52 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
>>> Дальше, если юзер запустил приложение и ушел курить (сессия INACTIVE) то все нормально, хоть он до завтра будет курить, связь не порвется - правильно понял? Pravilno. >>> Дальше если юзер загрузил тачку, т.е. сделал долгий save (с постингом, ожиданием разблокировки строк и т.д.) и в этот момент снял приложение - то что? что будет? сессия при этом пока что остается на сервере как ACTIVE и блокирует ресурсы... 2 varianta 1 -- Esli user "снял приложение" no sqlnet na cliente ostalsya givoy to EXPIRE_TIME vkluchaetsya nemedlenno 2 -- esli poterian technicheski link na mashinu kliena (on masinu prosto iz seti vydernul) to obschy timeout NA SERVERE do aktivizacii "kill session" sostavlyaet : tcp: keep_alive_time (protokola tcp) + expire_time(sqlnet.ora) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 21:17 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
ага... значит я понял ВСЕ ПРАВИЛЬНО.. тогда какого черта получается тот результат что опубликован выше? где я эксперимент с двумя юзерами проводил.... может базу надо было перезагрузить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 21:25 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
A vot rezultat togo, chto IDLE_TIME ne rabotaet eto TRETIE ponyatie, k timeout nikakogo otnosheniya ne imeet. OBYAZAN (v init.ora) bit ustanovlen parameter RESOURCE_LIMIT=TRUE (by default = FALSE) inache ni odin resursniy parameter v profilah ne rabotaet. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 21:35 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
да IDLE_TIME как я понял не шибко в тему... EXPIRE_TIME не работает! вот что главное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 21:40 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
expire_time ??? rabotaet, rabotaet ... godamy ustanovleno. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 21:44 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
A mogno durnoy vopros : EXPIRE_TIME ustanavlivalsia v sqlnet.ora na kliente ili na servere? dolgen bit na SERVERE tolko. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 21:53 |
|
||
|
Cессии
|
|||
|---|---|---|---|
|
#18+
я чтобы дурных вопросов не задавать и там и там поставил :) хотя в документаци про клиент написано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2003, 21:55 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=2815&tid=1992017]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
33ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 355ms |

| 0 / 0 |
