İçeriğe geç

PL/SQL Tablo Lock Kaldırma

Oracle veritabanı üzerinde bulunan tabloların yoğun bir transaction yağmuruna tutulmasından dolayı tablonun kitlenmesine yani lock almasına sebebiyet veriyor. Oluşan locktan dolayı tablo üzerinde SELECT, INSERT, UPDATE, DELETE işlemlerini yapamıyoruz. Bu sorunun çözümü ise lock alan tablonun o anki processi kill ederek sorunu çözmek.

İlk olarak aşağıdaki selecti çalıştırıyoruz.

Çalışan select sonucunda bir veya birden fazla kayıt görüntülenecektir. Önce sid, sonra serial#  alanlarını yazdıktan sonra aşağıdaki kodu çalıştırarak tablo üzerindeki lockı kaldırabiliriz.

Tarih:PL/SQL

Tek Yorum

  1. Burak Burak

    Aşağıdaki sql ile NESNE_ADI yazan yere tablo adını yazarak, o tabloyu hangi sessionların tuttuğunu görebilirsiniz. Yine herhangi bir procedure veya fonksiyonu değiştireceğinizde de benzer bir hata aldığnızda, bu sql ile ilgili nesneyi hangi session’ın kullandığını görüp kill edebilirsiniz.

    SELECT a.object_name,
    a.object_type,
    a.status,
    b.oracle_username username,
    b.session_id SID,
    b.process pid,
    s.machine,
    s.osuser,
    s.program,
    ‘ALTER SYSTEM KILL SESSION ”’ || s.SID || ‘,’ || s.serial# || ”’;’ kill_statement
    FROM dba_objects a, v$locked_object b, v$session s
    WHERE a.object_id = b.object_id AND b.session_id = s.SID AND a.object_name LIKE ‘NESNE_ADI%’;

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir