Başlangıç > Database, Oracle, PL/SQL > pl/sql de sessions kontrolü

pl/sql de sessions kontrolü


Merhaba
sessionsPl/Sql ile program geliştirdiğmiz her bir program bir session(oturum) üzerinde çalışır. Bazen program yeni bir session üzerinde işlemine devam eder bazen de bulunduğu session üzerinde lock sebebi ile beklemeye başlar. Yağtığımız işlemlerde ihtiyaç olması durumunda session üzerindeki bazı alanlara veri ataması da(bu işlemi ayrı bir makale olarak anlatacağıım) yapabiliriz. Bu gibi durumlarda işlem yatığımız session üzerinde bizim programın durumu nedir, lock var mı, atadığımız değerler nedir gibi sorular olacaktır. İşte bu sebeple pl/sql de var olan sessions bilgilerinin bulunduğu view ile hazırlanan bir sql yardımı sayesinde işlemlerimizi kontrol edebiliriz. v$session ve gv$session bu viewler session bilgierini barındırır.
v$session database üzerinde login olduğumuz partition içindeki session bilgierini bize verir. Fakat çalıştığımız database rac bir yapıda ise diğer partition üzerindeki session bilgilerine v$session ile ulaşamayız. Bu durumda ise gv$session view ini kullanarak rac sistemdeki tüm partitionların session bilgierini görebiliriz. Artık hangi ortamda nasıl bir session view ini kullanacağımızı öğrendiğimize göre hazırladığım pratik sql yardımı ile istediğimiz kontrolümüzü yapabiliriz. Aşağıdaki sqllerini ihtiyaç doğrultusunda istediğiniz gibi değiştirebilirsiniz.

[Login olunan partitiondaki sessions bilgileri]

select vs.sid, vs.osuser, vs.machine, vs.terminal, vs.program, vs.module,
       vs.action, vs.client_info, vs.lockwait, vs.final_blocking_session,
       'alter system kill session ' || '''' ||
       vs.sid || ',' || vs.serial# || ''';' session_kill
  from v$session vs
 where vs.username = 'SMT';

[Rac olan sistemlerdeki tüm partitionların sessions bilgileri]

select gvs.sid, gvs.osuser, gvs.machine, gvs.terminal, gvs.program, gvs.module,
       gvs.action, gvs.client_info, gvs.lockwait, gvs.final_blocking_session,
       'alter system kill session ' || '''' ||
       gvs.sid || ',' || gvs.serial# || ''';' session_kill
  from gv$session gvs
 where gvs.username = 'SMT';

Bu sqllerde ençok işimize yarayacak noktalardan birkaçı;

  • SID: Her bir sessionun uniqe olarak sahip olduğu session id bilgisidir.
  • MODULE: Bu alanlar sistem tarafından doldurulur.Fakat bizde bu alanlara veri atayıp kullanabiliriz.
  • ACTION: Bu alanlar sistem tarafından doldurulur.Fakat bizde bu alanlara veri atayıp kullanabiliriz.
  • CLIENT_INFO: İlgili session bilgisinin hangi client tarafından oluşturulduğu bilgisidir.
  • LOCKWAIT: İşlem yapılan session üzerinde lock var ise hangi lock bilgisini beklediğini gösterir
  • FINAL_BLOCKING_SESSION: İşlem yapılan session üzerinde oluşan lock kim tarafından oluşturulduğunu sid olarak bize verir.
  • SESSION_KILL:Bu satır sqllerde görüldüğü üzere ihtiyaç anında ilgili sessionu kill etmek için ihtiyacımız olan komut bilgisini barındırır.

Yukarıdaki sqller yardımı ile herhangi bir editör üzerinden session bilgisine bakmaya gerek olmadan istediğiniz değeri sql sonucundan görebilirsiniz.
Kolay gelsin.

Reklamlar
  1. Henüz yorum yapılmamış.
  1. No trackbacks yet.

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. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: