Friday, July 31, 2009

ORACLE'DA INACTIVE SESSIONLARI KILL ETMEK

--bu işlemleri yapabilmeniz için ALTER SYSTEM yetkisine sahip olmanız gerekiyor.
DECLARE

  v_dyn_sql  VARCHAR2(500);

BEGIN

  v_dyn_sql := 'SELECT ''kill session ''|| s.SID || '','' || s.serial# || '' '' || '' immediate ;'' '

               ||' FROM v$session s, v$process p'

               ||' WHERE s.paddr = p.addr '

               ||' AND s.username IS NOT NULL '

               ||' AND s.username = ''bilgisayarimin makina adi'' '

               ||' AND s.osuser = ''isletim sistemimin adi'' '

               ||' AND s.last_call_et / 3600 > 1 '

               ||' AND s.status = ''INACTIVE'' '

               ||'ORDER BY logon_time';

  

  dbms_output.Put_line(v_dyn_sql);

  

  EXECUTE IMMEDIATE (v_dyn_sql);

END;



--UNIX üzerinden ORACLE'nin inactive session'larını kill etmek için aşağıdaki yönetemi uygulayabiliriz.
--UNIX'te çalışan bir işi kill etmek için gerekli olan script
--kill -9 "çalışan işin id'si"
--bu script'i üretmek için aşağıdaki select cümleciğini hazırlayalım.

set echo off
head off
veri off
pages 50000 lines 120
spool on oracle_kill_session.sh


SELECT   'kill -9 '

         ||p.spid

         ||' # '

         ||s.username

         ||' '

         ||s.program

FROM     v$session s,

         v$process p

WHERE    s.paddr = p.addr

         AND s.username IS NOT NULL

         AND s.username = 'bilgisayarimin makina adi'

         AND s.osuser = 'isletim sistemimin adi'

         AND s.last_call_et / 3600 > 1          --son bir saattir sistemde olanlar

         AND s.status = 'INACTIVE'                     --inactive duruma düsenler.

ORDER BY logon_time;

/

spool off


--şimdi kill scriptimizi hazırladık. Sıra bunu çalıştırmaya geldi.

--önce çalıştırabilir hale getiriyoruz oracle_kill_session.sh dosyasına execute edilebilme yetkisi verelim.
chmod 700 oracle_kill_session.sh
--burada 777 diyerek herez'e yetki vermek doğru olmayabilir. Buna dikkat edelim.
./oracle_kill_session.sh
--diyerek inactive sessionları kill ediyoruz.


--çok daha farklı kıstaslara göre kırılım yapabilirsiniz.
--bu kıstaslar aşaıdakililer olabilir.

--SID
--SERIAL#
--USER#
--USERNAME
--STATUS
--SERVER
--SCHEMA#
-- SCHEMANAME
-- OSUSER
-- PROCESS
-- MACHINE
-- TERMINAL
-- PROGRAM
-- TYPE
--PLSQL_OBJECT_ID
--MODULE
--LOGON_TIME
--LAST_CALL_ET

2 comments:

Anonymous said...

Hi, I log on to your blogs regularly. Your writing style is
witty, keep up the good work!

Feel free to visit my blog post: how to get followers on instagram

Anonymous said...

e cigarette reviews, electronic cigarette, electronic cigarettes, e cigarette reviews, electronic cigarette, electronic cigarette