1. Anar Godjaev
http://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.
2. Anar Godjaev
http://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.
3. Anar Godjaev
http://anargodjaev.wordpress.com/
SQL> SELECT xidusn, object_id, session_id, locked_mode
FROM v$locked_object;
XIDUSN OBJECT_ID SESSION_ID LOCKED_MODE
--------- --------- ---------- ----------3 2711 9 3
0 2711 7 3
SQL> SELECT object_name FROM dba_objects
WHERE 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
4. Anar Godjaev
http://anargodjaev.wordpress.com/
SQL> SELECT sid,serial#,username
FROM v$session
WHERE type=’USER’;
SID SERIAL# USERNAME
--------- --------- -----------------------------8 122 SYSTEM
10 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.