Bazen veritabanından bir veri çekerken yanıt alamayız. O sırada ilgili tablo başka bir işlem tarafından güncellenmektedir ve veritabanı sunucusu bize en güncel halini sunabilmek için bizi bekletir.
Oracle üzerinde bu kilitli tabloları görüntüleyebilmek için aşağıdaki sorguyu kullanabilirsiniz
select c.owner, c.object_name, c.object_type, b.sid, b.serial#, b.status, b.osuser, b.machine
from v$locked_object a, v$session b, dba_objects c
where b.sid = a.session_id
and a.object_id = c.object_id;
Peki bu tabloların kilidini nasıl açacaksınız?
Bu durumda en kolay yöntem kilitlenmeye sebep olan tüm kullanıcıları sistemden düşürmektir. Bunu ara program kullanıyorsanız (TOAD vs.)program arayüzündeki menülerden gerçekleştirebilirsiniz.
Daha kolay bir yöntem için sadece aşağıdaki PL-SQL sorgusunu çalıştırmanız yeterli olacaktır.
BEGIN
FOR C IN (SELECT S.SID SID, S.SERIAL# SERIAL FROM V$LOCKED_OBJECT L, V$SESSION S WHERE L.SESSION_ID = S.SID) LOOP
EXECUTE IMMEDIATE (‘ALTER SYSTEM KILL SESSION ‘ || C.SID || ‘,’ || C.SERIAL );
END LOOP;
END;