enq: TM – contention bekleme olayı

14 Şub by Ahmet Duruöz

enq: TM – contention bekleme olayı

Oracle , eğer primary key olan ana tabloda bir değişiklik yapılıyorsa , bu primary key alanını refere eden foreign key bulunan alt tabloya kilit koymaya çalışır. Bu kilit full table lock (TM) şeklindedir.

enq: TM – contention bekleme olayı , genellikle bir DML işlemindeki indekslenmemiş foreign key olan tablolardaki işlemlerde görülmektedir. Ya da tablodaki işlemi engelleyen bir kilit olduğunda yeni işlem yapılmaya çalışıldığında “enq: TM – contention” bekleme olayı görülebilmektedir.

Çözüm için indekslenmemiş foreign key alanı için indeks oluşturulmalıdır. Eğer foreign key yoksa , aşağıdaki gibi kilitleyen session tespit edilip , sonlandırılırsa , bekleyen session işlemine başlayacaktır.

SQL> select a.sid, a.serial#
    from v$session a, v$locked_object b, dba_objects c 
    where b.object_id = c.object_id 
    and a.sid = b.session_id
    and OBJECT_NAME='TABLO_ADI';

   SID    SERIAL#
   ----   --------
   202     3908

Kilitleyen session aşağıdaki gibi sonlandırılmalıdır.

SQL> alter system kill session '202,3908';

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir