Я хочу убить оракула сессий автоматически, когда время запуска больше 1 часа, пожалуйста, помогите, как я могу это сделать.
Вы можете просто установить время ожидания простоя или время ожидания соединения в профиле и назначить этот профиль пользователям по мере необходимости.
Из the CREATE PROFILE документация :
CREATE PROFILE
Если пользователь превышает ограничение ресурса сеанса CONNECT_TIME или IDLE_TIME, база данных откатывает текущую транзакцию и завершает сеанс.Когда пользовательский процесс в следующий раз выполняет вызов, база данных возвращает ошибку. [...] CONNECT_TIME: укажите общее время, прошедшее для сеанса, выраженное в минутах. IDLE_TIME: укажите допустимые периоды непрерывного неактивного времени в течение сеанса, выраженные в минутах.Длительные запросы и другие операции не подпадают под это ограничение.
Если пользователь превышает ограничение ресурса сеанса CONNECT_TIME или IDLE_TIME, база данных откатывает текущую транзакцию и завершает сеанс.Когда пользовательский процесс в следующий раз выполняет вызов, база данных возвращает ошибку.
CONNECT_TIME
IDLE_TIME
[...]
CONNECT_TIME: укажите общее время, прошедшее для сеанса, выраженное в минутах.
IDLE_TIME: укажите допустимые периоды непрерывного неактивного времени в течение сеанса, выраженные в минутах.Длительные запросы и другие операции не подпадают под это ограничение.
Вы настраиваете профиль и назначаете нужному пользователю
, вот пример:
alter system set resource_limit=true scope=both; create profile restrictive limit connect_time 60 sessions_per_user 2 ldle_time 30; ALTER USER scott PROFILE restrictive;
Как убить сеанс?
ALTER SYSTEM KILL SESSION 'sid,serial#';
Как просмотреть все "старые" сеансы?
SELECT s.SID, s.SERIAL# FROM v$session s WHERE s.LOGON_TIME < (SYSDATE - (1 / 24))