Dashboard > СУБД > Home > Oracle, мочим долгоиграющие запросы > Просмотр
  СУБД Вход | Зарегистрироваться   Вариант для печати.  
  Oracle, мочим долгоиграющие запросы
Добавил(а) shixaro, последний раз редактировал(а) shixaro Jul 02, 2012
Метки: 

Скажем, нужно убить все сессии дольше 10 секунд от юзера ABRR. Вычисляем сид и сериал из системных вьюшек на инстансе и убиваем каждый в лупе.

begin
  for rec in (
               select
                a.spid pid,
                b.sid,
                b.serial# serial
               from
                v$session b,
                v$process a
               where
                b.paddr = a.addr
                and type='USER'
                and last_call_et>10
                and b.username='ABRR'
               order by sid
             ) 
  loop
    execute immediate 'alter system kill session '''|| rec.sid  || ',' || rec.serial || ''' IMMEDIATE';
  end loop;
end;

Вариант для Oracle RAC (так как мы не знаем на каком конкретно инстансе висят сессии юзера, иначе придется цепляться к каждому и выполнять на нем pl/sql) будет отличаться переориентированием c v$session на gv$session и дополнении запроса alter system kill session 'sid,serial#' инстансом: alter system kill session 'sid,serial#,@inst_id'

Аналогично можно привязаться к хосту, с которого висят сессии или к иным параметрам.

Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.5 Build:#805 Apr 26, 2007) - Запрос Bug/feature - Связаться с администраторами