ORA-00060: Deadlock detected

Ora-00060 deadlock hatası 2 veya daha sessionın aynı data setine lock koyması yapmaya çalışması aynı zamanda diğer sessionlardan da lock requestleri gelmesi sonucunda olayın dairesel bir hal alması durumunda ortaya çıkay durum olarak tanımlayabiliriz. Oracle deadlock hatasına internal olarak müdahale ederek kullanıcıya “ORA-00060: deadlock detected while waiting for resource” hatasını dönerek kiliti kendisi çözmektedir.

Bu yazı ile anlatmak istediğim tam olarak şu aslında, aşağıda ben test senaryosu oluşturmaya çalışırken çok basit bir şekilde 2 tane farklı session açarak senaryomu oluşturdum. Ancak concurrent olarak yüzlerce sessionın olduğu büyük yapıları düşündüğünüz de sorunun kaynağını tespit etmek çok da kolay olamayabiliyor. Dolayısıyla tamda bu nokta da işimizi nasıl kolaylaştırabiliriz ondan bahsediyor olacağım.

Aşağıdaki gibi bir deadlock durumu oluşturmadan önce, aşağıdaki event’ ı set ederek sonucunu gözlemleyelim ve üzerinde konuşalım;

SQL> ALTER SYSTEM SET EVENTS ‘10027 trace name context forever, level 2′;
System altered.
Continue reading