[ОТВЕТИТЬ]
19.11.2007 07:05
Vovantus
 
Доброго дня. Есть два вопроса, одинаковых по своей сути, но решение может быть разное, поэтому я их разделил.

1. Имеется определённое количество лицензий на подключение к базе. В целом, для работы их хватает! Но иногда бывает так, что в базу заходят пользователи, которым СМ нужен редко. В этом случае поработать им не получается. Т.к. на практике, основные пользователи СМ у нас заходят с утра в базу и сидят там до окончания рабочего дня. Смысла докупать лицензии не вижу. Может можно установить своеобразный таймаут на бездействие сессии, после истечения которого сессия просто отваливается? Таким образом лицензий будет хватать всем и всегда, т.к. редки случаи когда действительно все одновременно работают.

2. Имеется 2-х мегабитная выделенная линия между ЦС и МГ. По своей структуре неоднородная, состоящая из кусочков. В следствии этого, канал данных иногда падает. В этот момент пользователи, подключённые к базе из МГ, теряют доступ к функциям ТС и приходится СМ перезагружать. Хуже бывает, если в момент обрыва связи, кто-то набивал/редактировал документ, например безнал или СТ. В этом случае, после переподключения, пользователь не может продолжить работать с документом, т.к. в оракле висит не закрытая сессия этого пользователя. Приходится заходить на серваке в базу через DBA Studio и дисконнектить сессию. Есть ли возможность в данном случае что-нить реализовать, чтобы бездействующая сессия сама отваливалась через определённое время?
19.11.2007 07:10
Propil
 
В общем-то оба вопроса можно разрулить через терминальное подключение
19.11.2007 07:16
Vovantus
 
Цитата:
Propil В общем-то оба вопроса можно разрулить через терминальное подключение
А если без терминального доступа?
19.11.2007 07:47
Propil
 
не знаю, что страшнее - отвалившаяся сессия во время редактирования документа из-за плохой связи или из-за тайм-аута... )) (человек пописать вышел, к примеру)
19.11.2007 08:01
Vovantus
 
Цитата:
Propil не знаю, что страшнее - отвалившаяся сессия во время редактирования документа из-за плохой связи или из-за тайм-аута... )) (человек пописать вышел, к примеру)
Логично. Но можно попробовать обязать пользователей сохранять документы перед тем как покинуть рабочнее место. Можно, конечно, попробовать обязать их выходить их СМ, но это не решит глюков возникающих при разрыве связи! Собственно, интересно, можно реализовать указанный таймаут или нет? Если да, то каким образом? Я попробую реализовать это на практике, а потом по наработкам отпишусь где какие подводные камни всплыли.
19.11.2007 10:23
OlegON
 
Что касается работы из магазина по каналу, однозначно под расстрел, не делают так. И если делать, то, конечно, через сервер терминалов. Ждать пока что-то отвалится никто не хочет и достает ИТ, проверено.
Что касается таймаутов, то я, когда подобная проблема с недостатком лицензий была, выставлял таймаут в 40 минут, этого хватало и на туалет и на покурить после этого и одновременно активизировало работу. Стоит помнить, что Супермаг открывает несколько сессий, поэтому нужно помнить, что если раскроют раздел, то нельзя его забывать закрыть, когда не работают. У меня отнеслись с пониманием. Все крики я предлагал адресовывать руководству.
19.11.2007 11:01
Vovantus
 
Цитата:
OlegON Что касается работы из магазина по каналу, однозначно под расстрел, не делают так. И если делать, то, конечно, через сервер терминалов. Ждать пока что-то отвалится никто не хочет и достает ИТ, проверено.
Я отталкиваюсь от реального положения дел. Есть канал, по нему вполне комфортно работает клиент СМ. Ломать текущую схему работы и переходить на терминальные сессии несколько неудобно, т.к. во-первых (и это самый главный минус) - люди привыкли уже работать так как работают! Любое изменение (даже в лучшую сторону) воспринимается в штыки и очень сложно переучивать работников. Во-вторых - это лишняя терминальная лицензия, которая стоит 2500р. ну да бог с ней. Далее, нужно придумывать как прикрутить USB'шный терминал к терминальному клиенту. И, собственно, настраивать сам сервак как терминальный. Это на вскидку, не задумываясь, я написал. Полагаю, есть ещё ряд моментов, которые сразу на ум не пришли. А канал данных я со временем переделаю, кину свой провод одним куском, без посредников.

Цитата:
OlegON Что касается таймаутов, то я, когда подобная проблема с недостатком лицензий была, выставлял таймаут в 40 минут, этого хватало и на туалет и на покурить после этого и одновременно активизировало работу. Стоит помнить, что Супермаг открывает несколько сессий, поэтому нужно помнить, что если раскроют раздел, то нельзя его забывать закрыть, когда не работают. У меня отнеслись с пониманием. Все крики я предлагал адресовывать руководству.
ну так как это реализовать практически? И можно ли попробовать для разных пользователей поставить разный таймаут?
19.11.2007 11:41
OlegON
 
Цитата:
Vovantus ну так как это реализовать практически? И можно ли попробовать для разных пользователей поставить разный таймаут?
Я завел профиль ROOT (в DBA Studio, Security), посадил на него себя, всех, кому действительно нужны долгие простои в сессии, после чего поставил у профиля DEFAULT ограничение Idle session в 40 минут. Вот и все. Можно и другие профили завести, только не надо это... Меньше - слетать будут часто, больше - смысл теряется. Сейчас 240 стоит, чтобы не залочили случайно базу, товародвижение в 3 часа ночи считается, база работает круглосуточно.
19.11.2007 11:51
Vovantus
 
Цитата:
OlegON Я завел профиль ROOT (в DBA Studio, Security), посадил на него себя, всех, кому действительно нужны долгие простои в сессии, после чего поставил у профиля DEFAULT ограничение Idle session в 40 минут. Вот и все. Можно и другие профили завести, только не надо это... Меньше - слетать будут часто, больше - смысл теряется. Сейчас 240 стоит, чтобы не залочили случайно базу, товародвижение в 3 часа ночи считается, база работает круглосуточно.
А если создать профиль какой-нить, на который повесить всех, кто работает по выделенке, а дефаулт не менять? Такой вариант тоже прокатит?
19.11.2007 12:04
OlegON
 
Цитата:
Vovantus А если создать профиль какой-нить, на который повесить всех, кто работает по выделенке, а дефаулт не менять? Такой вариант тоже прокатит?
Прокатит, но сколько времени ты собираешься их держать? 15 минут? Накладную можно не успеть проверить, 30 минут - долго ждать, если отвалился сам, не отвалилась сессия.
19.11.2007 12:32
Vovantus
 
Цитата:
OlegON Прокатит, но сколько времени ты собираешься их держать? 15 минут? Накладную можно не успеть проверить, 30 минут - долго ждать, если отвалился сам, не отвалилась сессия.
похоже мы говорим о разных вещах *118 Мне нужно чтобы отваливалась только НЕАТИВНАЯ сессия. Для примера можно привести сессию на терминальном серваке. Если пользователь неативен определённое время - дисконнект! А ты, Олег, про что говоришь?
19.11.2007 13:00
Mtirt
 
Олег - про сессии Оракла. Ты лучше помониторь чем-нибудь сессии. Хоть DBA-Studio. Поймешь, Супермаг для своей работы открывает 3-4 оракловые сессии. Причем активна из них - одна. Но для работы нужны все. И если ты прибъешь одну из неактивных, то в нужную форму не вернутся назад данные.
ИМХО. Лучше сделать программулину или скрипт, чтобы пользователь в случае необходимости прибил зависшие сессии.
19.11.2007 13:12
OlegON
 
Я что-то запутался :) Во-первых, если ты просто разглядываешь приходку, то твоя сессия с ораклом неактивная. Активной она становится, когда в ту или другую сторону идут данные или сервак занят обработкой запроса. То, что пользователь смотрит на экран активности сессии не придает.
И по поводу сессий Оракла, тут я как раз и говорил, что открывается несколько сессий и об их активности. Что касается прибивания сессий, то самое надежное - orakill на сервере, поэтому пользователи со скриптами в пролете. Сетевую софтинку писать влом. :)
19.11.2007 14:37
Vovantus
 
Спасибо, просветили. Понял, что не всё так просто с этими сессиями как казалось *139 Если прибивать - то все сразу! Поставим вопрос по другому. Вот те сессии, которые остаются висеть после разрыва связи и к которым пользователь-создатель, после реконнекта, не может получить доступ. Почему они недоступны-то? Может, есть возможность как-то всё-таки к ним подключиться?
19.11.2007 15:26
OlegON
 
Подключаться можно, но запаришься. Можно сделать значительно проще - забить на сессии и убивать только залочки объектов из таблицы sslocks.
19.11.2007 15:31
Mtirt
 
А сессии минут через 40-50 сами поотваливаются...
20.11.2007 01:09
Vovantus
 
Цитата:
OlegON Что касается прибивания сессий, то самое надежное - orakill на сервере..
можно поподробнее на этом месте?
20.11.2007 07:39
Mtirt
 
Давай лучше про sslocks?
Это и на клиенте делать можно. Сделаешь мелкую программулину, куда передается номер заблокированного документа. И будет тебе счастье...
20.11.2007 08:49
Vovantus
 
Цитата:
Mtirt Давай лучше про sslocks?
Это и на клиенте делать можно. Сделаешь мелкую программулину, куда передается номер заблокированного документа. И будет тебе счастье...
возможно, что так будет лучше... Но во-первых, нужно учитывать тот факт, что разлочивать табличку будут обычные пользователи, поэтому это должно быть очень просто. Чем меньше нажатий, тем лучше Во-вторых, сам я такую программулину не напишу, т.к. нет вводных данных От чего отталкиваться? Точку отсчёта определить нужно. Поможешь?
20.11.2007 08:57
kadr
 
В принципе уже всё есть:
Точка отсчёта таблица sslocks. Посмотришь на её содержимое при работе ползователей всё станет видно.
Цитата:
Но во-первых, нужно учитывать тот факт, что разлочивать табличку будут обычные пользователи
Во-первых нужно учитывать что не всё можно доверять пользователям, такие вещи я бы ни в коем случае не доверил, т.к. могут ошибиться в номере документа, даже если выводить список заблокированных объектов по типам всё равно могут промахнуться. В итоге получишь вопли от других пользователей "программа не работает!!!!" и будешь разгребать уже другие проблемы.
20.11.2007 09:04
Vovantus
 
Цитата:
kadr Во-первых нужно учитывать что не всё можно доверять пользователям, такие вещи я бы ни в коем случае не доверил, т.к. могут ошибиться в номере документа, даже если выводить список заблокированных объектов по типам всё равно могут промахнуться.
вот-вот. Должно быть просто и в тоже время надёжно, чтобы косяков ненаделать!
А как вообще средствами оракла автоматом убить сессии определённых клиентов на серваке? Олег, кажется, про это и писал..

Цитата:
Сообщение от OlegON
Что касается прибивания сессий, то самое надежное - orakill на сервере..
Можно реализовать механизм создания флага. Появился файл определённый в расшаренной папке, ннкрон отлавливает это событие и запускает там "что-нибудь", чтоб клиентские сессии обрубить в оракле. Таким образом можно написать столько скриптов, сколько пользователей работает удалённо.
20.11.2007 09:19
kadr
 
Цитата:
Vovantus вот-вот. Должно быть просто и в тоже время надёжно, чтобы косяков ненаделать!
я высказал своё мнение, а делать и как это делать остаётся за тобой

Цитата:
Можно реализовать механизм создания флага. Появился файл определённый в расшаренной папке, ннкрон отлавливает это событие и запускает там "что-нибудь", чтоб клиентские сессии обрубить в оракле. Таким образом можно написать столько скриптов, сколько пользователей работает удалённо.
кто будет закидывать этот определённый файл? опять пользователи?
20.11.2007 09:22
Vovantus
 
Цитата:
kadr кто будет закидывать этот определённый файл? опять пользователи?
да, именно, тока это будет выглядеть так. Кликнули ярлычок на рабочем столе, соответствующий определённому имени - запустился батничек, который файлик создаёт в расшаренной папке. На серваке в ннкрон пишется скрипт, который отлавливает появление этого файлика и запускает определённое действие. У меня по такой системе выгрузки из бузы в МГ реализованы.
20.11.2007 09:30
kadr
 
т.е. в батнике прописать имя пользователя чьи сессии нужно убить?
20.11.2007 09:44
Vovantus
 
Цитата:
kadr т.е. в батнике прописать имя пользователя чьи сессии нужно убить?
нет! Не так. Сейчас напишу как.. Вот есть в магазине 3 пользователя:

Вася
Дуся
Петя

На рабочем столе для каждого пользователя присутствует ярлычок какой-нить красочный. Допустим, происходит обрыв связи. У меня этот момент отлавливается через ннкрон и если связи нет - убивает все процессы, связанные с СМ. Далее, после восстановления связи (кстати, на рабочем столе появляется сообщение если связи нет)пользователь заходит в СМ, а там бац и сообщение, типа "нифига ты не сможешь редактировать документ, потому что сессия висит незакрытая". Ну пользователь закрывает СМ, запускает определённый ярлык, тем самым запустив батфайл. В свою очеред батник создаёт обределённый флаг в расшаренной папке на серваке. Всё, на этом моменте закончились все возможное действия пользователя. Далее, уже на серваке, ннкрон отслеживает появление определённого флага и если находит его - запускает какой-нить скрипт. Всё это достаточно просто реализовать, я дольше писал Сложность для меня в том, что я не знаю как можно закрыть сессии определённого пользователя
20.11.2007 09:47
kadr
 
про форум sql.ru уже было в полезных ссылках. простейший поиск дает вот такие результаты:
21.11.2007 09:17
Vovantus
 
Кто может поделиться ссылкой на Orakill? Я так понимаю, что под разные вресии оракла, эта программулина имеет разные версии?
21.11.2007 09:41
7fox7
 
Цитата:
OlegON Что касается работы из магазина по каналу, однозначно под расстрел, не делают так. И если делать, то, конечно, через сервер терминалов. Ждать пока что-то отвалится никто не хочет и достает ИТ, проверено.
Что касается таймаутов, то я, когда подобная проблема с недостатком лицензий была, выставлял таймаут в 40 минут, этого хватало и на туалет и на покурить после этого и одновременно активизировало работу. Стоит помнить, что Супермаг открывает несколько сессий, поэтому нужно помнить, что если раскроют раздел, то нельзя его забывать закрыть, когда не работают. У меня отнеслись с пониманием. Все крики я предлагал адресовывать руководству.
А нет ли такого понятия в оракле как KeepAlive? Чтобы клиент который юзает подключение, постоянно кидал мелкие пакеты тем самым сообщая о том, что я еще тут и юзаю соединение. В случае если пакеты прекратились, то килл сессии.
21.11.2007 09:45
Vovantus
 
Цитата:
7fox7 А нет ли такого понятия в оракле как KeepAlive? Чтобы клиент который юзает подключение, постоянно кидал мелкие пакеты тем самым сообщая о том, что я еще тут и юзаю соединение. В случае если пакеты прекратились, то килл сессии.
видимо, нет. Возможно в новых версиях что-то похожее и реализовано, но я не слышал чтоб в 8 такое было.
21.11.2007 10:00
OlegON
 
Цитата:
Vovantus Кто может поделиться ссылкой на Orakill? Я так понимаю, что под разные вресии оракла, эта программулина имеет разные версии?
А чем тебя твоя, в составе серверной установки не устраивает?


Опции темы


Часовой пояс GMT +3, время: 16:24.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.