Upload
anar-godjaev
View
220
Download
2
Embed Size (px)
Citation preview
Anar Godjaevhttp://anargodjaev.wordpress.com/
DATABASE KİLİT MEKANİZMASI
Database kilit işlemleri çeşitli aşamalrda olabilir.Örneğin statemnt bazında oluşan hata aşağıdaki gibi olabilir.
Örneğin aynı anda iki kullanıcı tablo üzerinde statemnt çalıştırıp kilide yol açabilirler.
Bu şu an bir probleme yol açmaz ama aşağıdaki gib bir durum olursa,
Bu kaosu önlemenin yolu 1.transactionun commit edilmesidir.
İki tip lock tipi vardır.DML işlemleri için ve DDL işlemleri için.
DML işlemleri için bir örnek daha verirsek.
Anar Godjaevhttp://anargodjaev.wordpress.com/
Transcation 1 henüz commit edilmediğinden Transcation 2 işlemi yürütülemez.
Eğer tablo istenirse manuel olarakta kitlenebilir.
SQL> LOCK TABLE table_name IN mode_name MODE;
SQL> LOCK TABLE employee IN exclusive MODE;Table(s) Locked.
DDL Kilit mekanizması ise şu şekilde olmaktadır.
Bu Exclusive DDL kilitlerine örnektir.
Kilit Durumlarını izlemek içinde viewlardan ayarlanarak çeşitli sorgular yazabiliriz.
SQL> SELECT xidusn, object_id, session_id, locked_modeFROM v$locked_object;
Anar Godjaevhttp://anargodjaev.wordpress.com/
XIDUSN OBJECT_ID SESSION_ID LOCKED_MODE--------- --------- ---------- -----------3 2711 9 30 2711 7 3
SQL> SELECT object_name FROM dba_objectsWHERE object_id = 2711;OBJECT_NAME-------------EMPLOYEE
Yukarıdaki sorgudan da anlaşılabileceği gibi hangi tablo üzerinde lock var görebilmekteyiz.
Kilitler şu şekildede bertaraf edilebilir
SQL> SELECT sid,serial#,usernameFROM v$sessionWHERE type=’USER’;
SID SERIAL# USERNAME--------- --------- ------------------------------8 122 SYSTEM10 23 SCOTT
SQL> ALTER SYSTEM KILL SESSION '10,23';System altered.
Bazen kilit işlemleri karşılıklıda olabilmektedir.Bunada deadlock denilmektedir.Şu şekilde olmaktadır.
Anar Godjaevhttp://anargodjaev.wordpress.com/
Deadlockları izlemek daha kolaydır.Bu yapılan hatanın sonuçları trace fillera yazılır.