Forum
Soru : Oracle veri tabanım üzerinde bir çok kullanıcım var. Bu kullanıcıların bazen session kill edilmesi gerekiyor. Alter system yetkisi vermeden bunu yapabilir miyim ?
Cevap : Evet, bir kullanıcının kill edilebilmesi için normal şartlarda " Alter System " yetkisi olması gerekir. Bunun yerine kullanıcıya özel bir prosedür ile session kill edebilirsiniz.
Örnek kodlar aşağıda verilmiştir.
/* ilk olarak presedürümüzü yazıyoruz */
CREATE OR REPLACE PROCEDURE SYS.ABUZER_KILL_SESSION(p_sid NUMBER, p_serial NUMBER)
AS
v_user VARCHAR2(30);
BEGIN
SELECT MAX(username)
INTO v_user
FROM v$session
WHERE sid = p_sid
AND serial# = p_serial;
IF v_user IN ('USR_ABUZER') THEN --KILL OLABILECEK KULLANICILAR BURAYA GIRILECEK
EXECUTE IMMEDIATE 'ALTER SYSTEM KILL SESSION ''' || p_sid || ',' || p_serial || '''';
ELSIF v_user IS NULL THEN
RAISE_APPLICATION_ERROR(-20001,'Session Süresi bitti yada geçersiz SID / SERIAL');
ELSE
RAISE_APPLICATION_ERROR(-20002,'Bunun için yetkiniz yok.');
END IF;
END ABUZER_KILL_SESSION;
/
/* Prosedür için yetki Veriyoruz */
GRANT EXECUTE ON sys.ABUZER_KILL_SESSION TO USR_ABUZER;
/* V$Session görüntüsü için yetki veriyoruz */
GRANT SELECT ON V_$SESSION TO USR_ABUZER;
/* Synonym Ekliyoruz */
CREATE OR REPLACE SYNONYM USR_ABUZER.ABUZER_KILL_SESSION FOR SYS.ABUZER_KILL_SESSION;
/* Aşağıdaki sorgu ile kullanıcılar açık sessionları görebilir. */
SELECT username,
status,
blocking_session,
'EXEC ABUZER_KILL_SESSION (' || sid || ',' || serial# || ')' Kill_Command
FROM v$session
WHERE username IS NOT NULL AND TYPE <> 'BACKGROUND' AND USERNAME = 'USR_ABUZER'
/* Kullanıcı kendi Session numarasını görmek isterse */
SELECT SYS_CONTEXT ('USERENV', 'SID') FROM DUAL;
Oracle ACE Associate - Türkiye Hayat & Emeklilik
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************
Eline sağlık
Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************