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';