Forum

Oracle sessions oto...
 
Bildirimler
Hepsini Temizle

[Çözüldü] Oracle sessions otomatik disconnect

13 Yazılar
4 Üyeler
0 Reactions
2,859 Görüntüleme
(@gokhansen)
Gönderiler: 55
Trusted Member
Konu başlatıcı
 

Merhabalar,

     Veritabanı oracle olan x bir hastane otomasyonu kullanıyoruz. Management olarak da toad for oracle kullanıyoruz. Oracle'a hbys üzerinden login olan kullanıcıların (sessions) belli bir süre(örneğin 15 dk) işlem yapmadığı takdirde sistemden otomatik logout/disconnect olmasını istiyorum. Bunu Toad'dan bir schedul'a bağlamak mümkün mü ?

 
Gönderildi : 29/01/2019 13:07

(@h-koraygunduz)
Gönderiler: 301
Üye
 

Selamlar;

Profil, sqlnet.ora vb. yollarla tanımlamak mümkün ancak neden bu istek oldu anlamadım. Her zaman iyi sonuçlar veremeyebilir. Bunu otomasyon tarafı ile görüşerek yapmanız daha anlamlı olacaktır. Çünkü veri girişi tamamlanmadan kesintiler olabilir. Nedeni session yetmiyor ise process ve session sayısını arttırarak bu konuyu çözebilirsiniz.

İlla yapacağım diyorsanızda aşağıdaki adımlarla yapabilirsiniz. Söylediğim gibi Toad vb. üzerinden yapmak yerine otomasyon seviyesinde bunu yaptırmanız daha doğru olacaktır.

 

altersystem set resource_limit=true scope=both;

alter profile senior_claim_analyst limit
    connect_time 45
    sessions_per_user 2
    ldle_time 15;

 

Teşekkürler.

 
Gönderildi : 29/01/2019 14:10

(@gokhansen)
Gönderiler: 55
Trusted Member
Konu başlatıcı
 

Selamlar;

Profil, sqlnet.ora vb. yollarla tanımlamak mümkün ancak neden bu istek oldu anlamadım. Her zaman iyi sonuçlar veremeyebilir. Bunu otomasyon tarafı ile görüşerek yapmanız daha anlamlı olacaktır. Çünkü veri girişi tamamlanmadan kesintiler olabilir. Nedeni session yetmiyor ise process ve session sayısını arttırarak bu konuyu çözebilirsiniz.

İlla yapacağım diyorsanızda aşağıdaki adımlarla yapabilirsiniz. Söylediğim gibi Toad vb. üzerinden yapmak yerine otomasyon seviyesinde bunu yaptırmanız daha doğru olacaktır.

 

altersystem set resource_limit=true scope=both;

alter profile senior_claim_analyst limit
    connect_time 45
    sessions_per_user 2
    ldle_time 15;

 

Teşekkürler.

 

  • Nedeni session yetmiyor ise process ve session sayısını arttırarak bu konuyu çözebilirsiniz.
  • Hocam malesef otomasyon lisans sayımız az ve lisans maliyeti oldukça yüksek. Veri girişi ile ilgili tüm riskleri aldım o konuda sıkıntı yok.

 

İlgili scripti toad üzerinde nasıl task yapabilirim. Ya da o scripti sqlnet.ora dosyasının içine mi yazmayalım. Biraz daha detay verirseniz sevinirim.

 
Gönderildi : 29/01/2019 17:02

(@h-koraygunduz)
Gönderiler: 301
Üye
 

Selamlar;

Bunun için scripte gerek yok. Verdiklerimi çalıştırman sonucunda 15 dk idle olan sessionları kapatacaktır. Lütfen bunun onayını otomasyon tarafından alınız. Aksi takdirde beklenmeyen sonuçlar ortaya çıkabilir.

Teşekkürler

 
Gönderildi : 29/01/2019 18:00

(@gokhansen)
Gönderiler: 55
Trusted Member
Konu başlatıcı
 

Selamlar;

Bunun için scripte gerek yok. Verdiklerimi çalıştırman sonucunda 15 dk idle olan sessionları kapatacaktır. Lütfen bunun onayını otomasyon tarafından alınız. Aksi takdirde beklenmeyen sonuçlar ortaya çıkabilir.

Teşekkürler

 

Çok sağol hocam deneyeceğim. Son birşey sormak istiyorum.

Kullanıcılar oracle'a iki farklı exe üzerinden login oluyorlar. xxxx.exe ve yyyyy.exe gibi. Ben sadece xxxx.exe den login olmuş kullanıcıları disconnect etmek istesem scriptte nasıl bir değişiklik yapmam gerekecek ya da böyle bir şey mümkün mü ?

 
Gönderildi : 29/01/2019 19:16

(@h-koraygunduz)
Gönderiler: 301
Üye
 

Selamlar;

Verdiğim komut düzeni ile bu mümkün değil. Ayıramazsın. Bu ayar genel olarak tüm user sessionlar için geçelidir.

Teşekkürler.

 
Gönderildi : 30/01/2019 01:29

(@bugraparlayan)
Gönderiler: 324
Üye
 

Selamlar,

 

Koray hocama ek olarak sorgu bazında şöyle birşey olabilir, aklımdan yazdığım için umarım eksik yoktur.

 

SELECT STATUS,S.SID,S.SERIAL#,S.PROGRAM ,SECONDS_IN_WAIT ,'ALTER SYSTEM KILL SESSION '''||S.SID||','||S.SERIAL#||''' IMMEDIATE;'
FROM v$session S WHERE username IS NOT NULL AND SECONDS_IN_WAIT>=900 AND STATUS='INACTIVE' AND PROGRAM='HASTANE.EXE'

 

bunun çıktığısı 15 dakika ve üzeri olan inactive kullanıcıları verir. Daha sonrada kill edilir fakat bilmediğiniz bir husussa bence hiç bulaşmayın.

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 : 30/01/2019 01:52

(@gokhansen)
Gönderiler: 55
Trusted Member
Konu başlatıcı
 

İlginiz için teşekkürler üstadlar. Peki ben bu scripti çalıştırdıktan bir süre sonra disable etmek istesem ne yapmalıyım. ?

 
Gönderildi : 30/01/2019 11:36

(@gokhansen)
Gönderiler: 55
Trusted Member
Konu başlatıcı
 

Selamlar,

 

Koray hocama ek olarak sorgu bazında şöyle birşey olabilir, aklımdan yazdığım için umarım eksik yoktur.

 

SELECT STATUS,S.SID,S.SERIAL#,S.PROGRAM ,SECONDS_IN_WAIT ,'ALTER SYSTEM KILL SESSION '''||S.SID||','||S.SERIAL#||''' IMMEDIATE;'
FROM v$session S WHERE username IS NOT NULL AND SECONDS_IN_WAIT>=900 AND STATUS='INACTIVE' AND PROGRAM='HASTANE.EXE'

 

bunun çıktığısı 15 dakika ve üzeri olan inactive kullanıcıları verir. Daha sonrada kill edilir fakat bilmediğiniz bir husussa bence hiç bulaşmayın.

 

         Hocam denedim fakat olmadı. Ayrıca bu sorgu sadece select değil mi kill işlemini nasıl yapacak anlayamadım. Bir de HBYS üzerinden login olan tüm kullanıcılar status = INACTIVE olarak görünüyor.(HBYS üzerinde select insert update işlemleri olmasına rağmen)  Burada bir çelişki var sanki 😉

 

Koray hocam'ın verdiği scripti daha denemedim exe ayrımı yapmam şart. 

 
Gönderildi : 30/01/2019 12:03

(@bugraparlayan)
Gönderiler: 324
Üye
 

Selamlar,

 

PL/SQL konusuna yabancısınız sanırım. Bu sorgu otomatik kill etmez fakat önce çıktıyı alıp sonra sizin kill etmeniz için son sütuna yazmanız gereken sorguyu verir. Script olmadan .exe ayrımı yapamazsınız.

 

SELECT STATUS,S.SID,S.SERIAL#,S.PROGRAM ,SECONDS_IN_WAIT ,'ALTER SYSTEM KILL SESSION '''||S.SID||','||S.SERIAL#||''' IMMEDIATE;'
FROM v$session S WHERE username IS NOT NULL AND SECONDS_IN_WAIT>=900 AND STATUS='INACTIVE' AND PROGRAM='HASTANE.EXE'

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 : 30/01/2019 12:33

(@gokhansen)
Gönderiler: 55
Trusted Member
Konu başlatıcı
 

Selamlar,

 

PL/SQL konusuna yabancısınız sanırım. Bu sorgu otomatik kill etmez fakat önce çıktıyı alıp sonra sizin kill etmeniz için son sütuna yazmanız gereken sorguyu verir. Script olmadan .exe ayrımı yapamazsınız.

 

SELECT STATUS,S.SID,S.SERIAL#,S.PROGRAM ,SECONDS_IN_WAIT ,'ALTER SYSTEM KILL SESSION '''||S.SID||','||S.SERIAL#||''' IMMEDIATE;'
FROM v$session S WHERE username IS NOT NULL AND SECONDS_IN_WAIT>=900 AND STATUS='INACTIVE' AND PROGRAM='HASTANE.EXE'

Hocam amaç oto kill etmek. Zaten diğer türlü manuel olarak toaddan kill edebiliyorum. Koray Hoca'nın verdiği script de exe ayrımı yapamaz mıyız peki ?

 
Gönderildi : 30/01/2019 12:40

(@bugraparlayan)
Gönderiler: 324
Üye
 

Selamlar,

Koray hoca parametre vermiş bu dediğiniz yapılamaz fakat gönderdiğim sql sorgusunu otomatize edebilir siniz.

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 : 01/02/2019 16:23

(@onurkaramanli-2)
Gönderiler: 30
Eminent Member
 

Nucleus kullanıyorsan monad ile görüşmelisin yoksa sıkıntı olur 🙂

 
Gönderildi : 15/02/2022 11:24

Paylaş: