[ОТВЕТИТЬ]
Опции темы
23.09.2011 07:51  
OlegON
Как смотрю, по статистике у очень многих стоит вопрос с недостатком лицензий, который можно было бы решить отключением пользователей по бездействию. Конечно, есть профили в Оракле и планы, но они не решают проблему (решают ее криво) в связи с тем, что сессий Супермаг открывает несколько и не очень хорошо выкидывать пользователей, если за ними числится открытый на редактирование документ.
Я, конечно, в итоге сделаю в оптимизаторе и сам, но если у кого-то есть готовый алгоритм/скрипт/пожелания/замечания - поделитесь?
 
23.09.2011 10:54  
Carott
Часто бывает, что менеджеры оставляют открытытыми приложения и занимаются другими делами. В Администраторе сервера приложений есть такой пункт - Время бездействия. Можно используя данные из него отключать сессию пользователя (через час например)
Это в раздел пожелания*129
 
03.09.2015 10:56  
karachun
Как известно СМ+ создаёт несколько сессий Oracle. Посмотреть эти сессии и время их простоя в V$SESSION труда не составляет. В «Администратор сервера приложений» в окне «Статистика и управление активными сессиями» есть информация о времени простоя. Одна из строчек в V$SESSION, для пользователя совпадает по времени простоя из «Администратор сервера приложений».
Вопрос: по какому условию из нескольких сессий для одного имени пользователя выбрать ту, по у которой время простоя совпадёт с временем из «Администратор сервера приложений»?
 
03.09.2015 11:00  
OlegON
Я, кстати, так ничего и не сделал.
Но, если бы стал копать и сравнивать - стал бы сравнивать, какие сессии что лочат в SUPERMAG.SSLOCKS.
Надеюсь, что поделишься изысканиями в итоге...
 
"Спасибо" OlegON от:
04.09.2015 09:33  
karachun
Вот что у меня получилось:
SQL код:
select TO_CHAR(FLOOR(S.LAST_CALL_ET 60 60), '00') || ':' ||
       
TO_CHAR(FLOOR((S.LAST_CALL_ET -
                     
FLOOR(S.LAST_CALL_ET 60 60) * 60 60) / 60), '00') || ':' ||
       
TO_CHAR(S.LAST_CALL_ET FLOOR(S.LAST_CALL_ET 60 60) * 60 60 -
               
FLOOR((S.LAST_CALL_ET -
                     
FLOOR(S.LAST_CALL_ET 60 60) * 60 60) / 60) * 60'00') as "Время простоя"
       
,S.LAST_CALL_ET
       
,S.SID
       
,S.SERIAL#
       
,S.USERNAME
       
--,L.*
from   SUPERMAG_SESSIONS S
      
,SSLOCKS           L
where  S
.SID L.SID
       
and S.SERIAL# = L.SERNUM
      
--
       and 
S.USERNAME <> 'SUPERMAG'
       
and S.PROGRAM 'Sm.Main.exe' 
То что отбирается удаляю через
SQL код:
ALTER SYSTEM KILL SESSION 'sid,serial#'
Тестировал целый день. Жалоб от пользователей нет. В «Администратор сервера приложений» в окне «Статистика и управление активными сессиями» количество пользователей изменяется.
Считаю цель занятия достигнута.
 
"Спасибо" karachun от:
04.09.2015 09:43  
OlegON
Выкидываешь даже тех, кто с залоченными документами? Инвентаризаторы не убьют? И обращу внимание, что извращенцам, которые считают ТД и выполняют другие сервисные функции не из под SUPERMAG, придется запрос поправить.
 
04.09.2015 10:01  
karachun
Спасибо!!! Подумаю над замечаниями.
 
 
Опции темы



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

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