ketika berbicara oracle pasti didalamnya terdapat session, setiap user yang login mendapatkan session, jika user tersebut login dua kali berarti sessionnya ada dua.
session tidak aktif sehari sebelum di kill dengan perintah :
1.Opsi pertama kill session all
begin for i in (select * from v$session where status='INACTIVE' and (sysdate-PREV_EXEC_START)>1) LOOP EXECUTE IMMEDIATE(q'{ALTER SYSTEM KILL SESSION '}'||i.sid||q'[,]' ||i.serial#||q'[']'||' IMMEDIATE'); END LOOP; end;
Sedangkan jika ingin melakukan secara manual bisa menggunakan perintah
2.Opsi secara manual
SELECT sid, serial#, status, username FROM v$session where status='INACTIVE';
kemudian kill session nya dengan key sid dan serial
ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
Contoh menjalankan perintah :
SELECT sid, serial#, status, username FROM v$session where status='INACTIVE';
SID | SERIAL# | STATUS | USERNAME |
24 | 10245 | INACTIVE | ACEPSOPIAN |
535 | 8883 | INACTIVE | GANTENG |
1032 | 46953 | INACTIVE | CAKEP |
untuk melakukan kill sessionnya gunakan perintah berikut:
ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
Contoh kita akan mekakukan kill session pada SID 24, maka perintah nya :
ALTER SYSTEM KILL SESSION '24,10245' IMMEDIATE;
Catatan :
Jika ingin melakukan kill session baik itu user active ataupun inactive cukup dengan perintah berikut ini hanya memasukan namanya saja, nanti session user tersebut kill semua yang active ataupun inactive :
BEGIN FOR r IN (select sid,serial# from v$session where username='NAMA_USER') LOOP EXECUTE IMMEDIATE 'alter system kill session ''' || r.sid || ',' || r.serial# || ''''; END LOOP; END; /
Contoh :
BEGIN FOR r IN (select sid,serial# from v$session where username='ACEPSOPIAN') LOOP EXECUTE IMMEDIATE 'alter system kill session ''' || r.sid || ',' || r.serial# || ''''; END LOOP; END; /
Sekian tutorial kali ini semoga bermanfaat