четверг, 29 ноября 2012 г.

Блокировки в оракл

         Бывают ситуации, когда отрабатывая некие скрипты в Oralce замечаешь, что что-то все повисло. Вот так было и у меня - отрабатывая инстолл скрипт у меня отвалилась сессия... после возобновление коннекта запускаю скрипт и вижу что что-то ждем несколько минут...
         Вот здесь и помог скрипт с простор sql.ru


SELECT sn.username, m.sid, m.type, 
        DECODE(m.lmode, 0, 'None', 
                        1, 'Null', 
                        2, 'Row Share', 
                        3, 'Row Excl.', 
                        4, 'Share', 
                        5, 'S/Row Excl.', 
                        6, 'Exclusive', 
                lmode, ltrim(to_char(lmode,'990'))) lmode, 
        DECODE(m.request,0, 'None', 
                         1, 'Null', 
                         2, 'Row Share', 
                         3, 'Row Excl.', 
                         4, 'Share', 
                         5, 'S/Row Excl.', 
                         6, 'Exclusive', 
                         request, ltrim(to_char(m.request, 
                '990'))) request, m.id1, m.id2 
FROM v$session sn, v$lock m 
WHERE (sn.sid = m.sid AND m.request != 0) 
        OR (sn.sid = m.sid 
                AND m.request = 0 AND lmode != 4 
                AND (id1, id2) IN (SELECT s.id1, s.id2 
     FROM v$lock s 
                        WHERE request != 0 
              AND s.id1 = m.id1 
                                AND s.id2 = m.id2) 
                ) 
ORDER BY id1, id2, m.request; 
         Он дает много инфы для нас, но я не заморачиваясь, посмотрел m.sid - что дало мне инфу о том между какими сессиями конфликт. Ну а далее, я нашел порубленную сессию и в девелопере просто убил сессию. :)
          Думаю, это must have скриптик!

Комментариев нет:

Отправить комментарий