06.11.2018 09:51
OlegON
 
ты бы лучше привел код своего скрипта, чем описывать...
06.11.2018 10:15
Diamondne
 
Цитата:
OlegON ты бы лучше привел код своего скрипта, чем описывать...
Собственно сам запрос.
SQL код:
select 'taskkill /s'||' '||SUBSTR(MACHINE,11)||' '||'/im Sm.Main.exe' from V$SESSION where USERNAME in
(select USERNAME from V$SESSION where AUDSID in 
(select AUDSID from
(select MIN(AUDSID)AUDSIDUSERNAMEMACHINE from V$SESSION where STATUS<>'KILLED' and PROGRAM 'Sm.Main.exe' GROUP BY USERNAME,MACHINE))
and 
STATUS<>'KILLED'
and PREV_EXEC_START sysdate-1/24)
GROUP BY MACHINE
Результат через spool пихаю в батник и запускаю его.
06.11.2018 20:30
OlegON
 
интересная идея, хотя я не очень понимаю, зачем брать min(audsid)... сейчас голова плохо варит, но хочу обратить внимание на табличку SSLOCKS, которую надо учитывать, например, чтобы не выкидывать создающих инвентаризационную опись...
06.11.2018 22:51
Diamondne
 
min(audsid) - по этому параметру как раз выбирается сессия, по которой "Статистика по активным сессиям" отображает время простоя клиента.
По поводу инвентаризационных описей и прочих "тяжелых" операций,- именно поэтому выбрано время простоя больше часа - это исключает некорректные отключения.
Вот, собственно, суть проблемы. Используя аналогичный запрос я могу получить sid и serial# всех сессий конкретного пользователя с конкретного ПК. Но, если их всех грохнуть, то клиент супермага просто переподключится. У меня не получается сделать что-то аналогичное нажатию кнопки "Удалить" в "Статистике по активным сессиям". Чтобы просто отключить клиента супермага от БД.
07.11.2018 07:05
OlegON
 
по крайней мере раньше лицензии считались по записям в SSLOCKS, потому и предлагаю, во-первых, проверять записи в ней, во-вторых, ее и чистить... Это навскидку. Можно покрутить, поисследовать эту табличку, может, еще идеи посетят.
07.11.2018 09:40
Diamondne
 
Спасибо! Заработало. Если грохнуть сессию, которая указана в SSLOCKS, то клиент Супермага отлетает сразу в TNS adapter error.
Странно то, что когда я грохаю последовательно все сессии этого пользователя с этого ПК, то клиент СМ переподключается.
07.11.2018 15:11
Diamondne
 
Да, хочу еще указать, что все вышеописанное актуально только для oracle 11+. В oracle 10 нет параметра PREV_EXEC_START в V$SESSION
04.10.2019 09:15
OgyBaH
 
Закрываем процесс Sm.Main.exe у пользователя с помощью мизерной программки проверяющей бездействие мышки на всем рабочем столе. Программка запускается в фоне и не видна пользователю. Пользователь конечно может удалить ее в Диспетчере задач, если будет знать что удалять.
04.10.2019 09:34
OlegON
 
Тут нюанс в том, что если именно прибить процесс так, чтобы он нештатно завершился, то сессия еще некоторое время может болтаться. Опять же, не все очевидно с процессором отчетов, который у кого-то может и остаться. А если Супермагу штатно предложить закрыться, он выкидывает диалоговое окно.

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