Anasayfa » Forum

Oracle sessions oto...
 

Oracle sessions otomatik disconnect  

  RSS
Gökhan Şen
(@GokhanSen)
Yeni Üye

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ü ?

Alıntı
Gönderildi : 29/01/2019 13:07
H. Koray GUNDUZ
(@h-koraygunduz)
Yeni Üye Forum Yöneticisi

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.

CevapAlıntı
Gönderildi : 29/01/2019 14:10
Gökhan Şen
(@GokhanSen)
Yeni Üye

[quote user="H. Koray GÜNDÜZ"]

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.

[/quote]

 

  • 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.

CevapAlıntı
Gönderildi : 29/01/2019 17:02
H. Koray GUNDUZ
(@h-koraygunduz)
Yeni Üye Forum Yöneticisi

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

CevapAlıntı
Gönderildi : 29/01/2019 18:00
Gökhan Şen
(@GokhanSen)
Yeni Üye

[quote user="H. Koray GÜNDÜZ"]

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

[/quote]

 

Ç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ü ?

CevapAlıntı
Gönderildi : 29/01/2019 19:16
H. Koray GUNDUZ
(@h-koraygunduz)
Yeni Üye Forum Yöneticisi

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.

CevapAlıntı
Gönderildi : 30/01/2019 01:29
Buğra PARLAYAN
(@bugraparlayan)
Yeni Üye Forum Yöneticisi

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.

CevapAlıntı
Gönderildi : 30/01/2019 01:52
Gökhan Şen
(@GokhanSen)
Yeni Üye

İ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. ?

CevapAlıntı
Gönderildi : 30/01/2019 11:36
Gökhan Şen
(@GokhanSen)
Yeni Üye

[quote user="Buğra PARLAYAN"]

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.

[/quote]

 

         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. 

CevapAlıntı
Gönderildi : 30/01/2019 12:03
Buğra PARLAYAN
(@bugraparlayan)
Yeni Üye Forum Yöneticisi

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'

CevapAlıntı
Gönderildi : 30/01/2019 12:33
Gökhan Şen
(@GokhanSen)
Yeni Üye

[quote user="Buğra PARLAYAN"]

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'

[/quote]

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 ?

CevapAlıntı
Gönderildi : 30/01/2019 12:40
Buğra PARLAYAN
(@bugraparlayan)
Yeni Üye Forum Yöneticisi

Selamlar,

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

CevapAlıntı
Gönderildi : 01/02/2019 16:23
Paylaş:
  
Çalışıyor

Lütfen Giriş yap yada Kayıt ol