Forum

1 Soru 1 Cevap : Or...
 
Bildirimler
Hepsini Temizle

[Çözüldü] 1 Soru 1 Cevap : Oracle Database Alter System yetkisi olmayan kullanıcı Session Kill yapabilir mi ?

2 Yazılar
2 Üyeler
0 Reactions
1,694 Görüntüleme
(@bugraparlayan)
Gönderiler: 324
Üye
Konu başlatıcı
 

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.
*****************************************************************

 
Gönderildi : 12/02/2020 14:41

Hakan Uzuner
(@hakanuzuner)
Gönderiler: 33365
Illustrious Member Yönetici
 

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.
*****************************************************************

 
Gönderildi : 12/02/2020 20:43

Paylaş: