Blog

Kilitlenmiş Tablo, Kullanıcı ve nesnleri bulmak

Bazen Kullanıcılar Update butonuna basar commit  etmez üstüne yemeğe gider ya da program kapanır. Başka birisi o kayıtlarla ulaşamaz. İşte bu durumda , o kilidi ve kitleyen kişiyi öğrenmek içinben aşağıdaki sorguyu çalıştırıyorum.

select b.LOGON_TIME,b.LAST_CALL_ET /60 as SON_ISLEM, c.owner, c.object_name,  c.object_type, b.sid,  b.serial#,
b.status, b.osuser, b.machine
from v$locked_object a ,  v$session b, dba_objects c
where b.sid = a.session_id and a.object_id = c.object_id;

Böylece Hangi kullanıcının hangi tabloları ne zaman kitlediğini öğrenebiliyor ve gerekirse daha önce şurada bahsetmiş olduğum procedure ile  oturumun  bağlantısını kesebiliyorum. böylece LOCK işlemini ortadan kaldırıyorum.

Dezavantajı ise kullanıcı çok uzun emekler harcayıp birşeyler yazmış ama göndermemişse bu veri rollback edilir. kullanıcı bi zahmet yeniden yazar ve kaydeder.

not : son_islem dakika cinsinden o DML sorgusunu ne kadar önce çalıştırdığını gösterir. 15-20 dk dan fazlaysa kill etmek daha mantıklı olur.