niedziela, 9 października 2011

Monitorowanie blokad







W praktyce administratora zdarzy się Wam nie raz, że jakiś user zmieni dane a nie zatwierdzi albo nie wycofa zmian i w ten sposób zablokuje zasób. Polecenia innych użytkowników którzy zechcą zmienić te same dane, będą czekać na zdjęcie blokady (a tymczasem użytkownik wyszedł, lub system który założył blokadę zawiesił się). Możemy sprawdzić kto i co nam blokuje w ten sposób:

select sid,serial#,lmode,l.request,status,osuser,machine,terminal,program,schemaname, o.name
from v$lock l join obj$ o on (l.id1=o.obj#)
join v$session s on (s.sid=l.sid);



W razie potrzeby możemy ubić sesję która blokuje nam zasób:

alter system kill session 'sid,serial';

SID i SERIAL podstawiamy odpowiedni z wyniku pierwszego zapytania.

1 komentarz:

  1. kolumna zdefiniowana w sposób niejednoznaczny :)

    poprawnie jest:
    select
    l.sid,
    serial#,
    lmode,
    l.request,
    s.status,
    osuser,
    machine,
    terminal,
    program,
    schemaname,
    o.name
    from v$lock l join obj$ o on (l.id1=o.obj#)
    join v$session s on (s.sid=l.sid);

    OdpowiedzUsuń