killsession.sql

Selamlar,

bu makalede database’deki açık session’ları kill etmek için yazdığım script’i paylaşıcam. Script oldukça basit;

DECLARE
 CURSOR c1 IS
 SELECT sid, serial# FROM v$session WHERE USERNAME = upper('&1');
BEGIN
 FOR rec IN c1 LOOP
 EXECUTE IMMEDIATE 'alter system kill session ''' || rec.sid || ',' || rec.serial# || ''' immediate';
 END LOOP;
END;
/

Parametre olarak herhangi bir user vermek yeterli;

SQL> @killsession.sql hr
old 3: SELECT sid, serial# FROM v$session WHERE USERNAME = upper('&1');
new 3: SELECT sid, serial# FROM v$session WHERE USERNAME = upper('hr');

PL/SQL procedure successfully completed.

hr user’ı ile açtığım session’ı kontrol ediyorum.

[oracle@grid scripts]$ sqlplus hr/hr
SQL*Plus: Release 11.2.0.4.0 Production on Sun Jun 29 15:06:41 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SQL>
SQL> select * from dual;
select * from dual
 *
ERROR at line 1:
ORA-03135: connection lost contact
Process ID: 3445
Session ID: 61 Serial number: 5

Görüldüğü gibi hr user’ının açık session’ı kill edildi.

Kolay gelsin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s