Bir Oracle veritabanına izin verilen maksimum bağlantı sayısı nasıl kontrol edilir?


91

Oracle veritabanı için izin verilen maksimum bağlantı sayısını kontrol etmenin en iyi yolu SQL kullanmaktır? Sonunda, mevcut oturum sayısını ve izin verilen toplam sayıyı göstermek istiyorum, örneğin "Şu anda 80 bağlantıdan 23'ü kullanılıyor".

Yanıtlar:


123

Bir Oracle veritabanının desteklediği bağlantıların sayısını belirlemede devreye girebilecek birkaç farklı sınır vardır. En basit yaklaşım SESSIONS parametresini ve V $ SESSION'ı kullanmaktır, yani

Veritabanının izin vermek üzere yapılandırıldığı oturum sayısı

SELECT name, value 
  FROM v$parameter
 WHERE name = 'sessions'

Şu anda aktif olan oturumların sayısı

SELECT COUNT(*)
  FROM v$session

Yine de söylediğim gibi, hem veritabanı düzeyinde hem de işletim sistemi düzeyinde ve paylaşılan sunucunun yapılandırılıp yapılandırılmadığına bağlı olarak başka olası sınırlar da vardır. Paylaşılan sunucu göz ardı edilirse, SESSIONS parametresinin sınırına ulaşmadan önce PROCESSES parametresinin sınırına ulaşabilirsin. Ayrıca, her oturum belirli bir miktarda RAM gerektirdiği için işletim sistemi sınırlarına ulaşabilirsiniz.


pardon, bu sorguyu nasıl çalıştırabiliriz? "V $ oturumundan
köylü

3
@ yin03 - Bu, kullandığınız Oracle kullanıcısının v$sessiongörünümde ayrıcalıklara sahip olmadığı anlamına gelir . DBA'nızdan size bu ayrıcalığı vermesini istemeniz gerekir. Büyük olasılıkla, sadece o nesne üzerindeki rol veya doğrudan hibe de işe select any dictionaryyarasa da , ayrıcalık select_catalog_roleistersiniz.
Justin Cave

38

Seans parametresi, süreçler parametresinden türetilir ve maks. İşlem sayısını değiştirdiğinizde buna göre değişir. Daha fazla bilgi için Oracle belgelerine bakın .

Yalnızca oturumlar hakkında bilgi almak için:

    select current_utilization, limit_value 
    from v$resource_limit 
    where resource_name='sessions';
CURRENT_UTILIZATION LIMIT_VALUE
------------------- -----------
                110 792

Her ikisi hakkında bilgi göstermek için şunu deneyin:

    select resource_name, current_utilization, max_utilization, limit_value 
    from v$resource_limit 
    where resource_name in ('sessions', 'processes');
RESOURCE_NAME CURRENT_UTILIZATION MAX_UTILIZATION LIMIT_VALUE
------------- ------------------- --------------- --- --------
işlemler 96 309 500
oturumlar 104 323 792

34

Bu kaynağa dayanarak bunun işe yarayacağını düşündüm .

SELECT
  'Currently, ' 
  || (SELECT COUNT(*) FROM V$SESSION)
  || ' out of ' 
  || DECODE(VL.SESSIONS_MAX,0,'unlimited',VL.SESSIONS_MAX) 
  || ' connections are used.' AS USAGE_MESSAGE
FROM 
  V$LICENSE VL

Ancak Justin Cave haklı. Bu sorgu daha iyi sonuçlar verir:

SELECT
  'Currently, ' 
  || (SELECT COUNT(*) FROM V$SESSION)
  || ' out of ' 
  || VP.VALUE 
  || ' connections are used.' AS USAGE_MESSAGE
FROM 
  V$PARAMETER VP
WHERE VP.NAME = 'sessions'

pardon, bu sorguyu nasıl çalıştırabiliriz? "V $ oturumundan
köylü

2
@ yin03 Oracle veya başka bir veritabanı türü mü kullanıyorsunuz? Oracle ise bir izin sorunu olabilir.
JosephStyons

1
kusursuz sorgu @JosephStyons!
Gaurav

@guarav, yararlı bulduğuna sevindim!
JosephStyons

4

Not: Bu, sorunun yalnızca bir kısmını yanıtlar.

Sadece izin verilen maksimum oturum sayısını bilmek istiyorsanız, o zaman sqlplus'ta sysdba olarak çalıştırabilirsiniz:

SQL> show parameter sessions

Bu size aşağıdaki gibi bir çıktı verir:

    NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
java_max_sessionspace_size           integer     0
java_soft_sessionspace_limit         integer     0
license_max_sessions                 integer     0
license_sessions_warning             integer     0
sessions                             integer     248
shared_server_sessions               integer

Oturumlar parametresi, istediğiniz parametredir.


4

Küme genelinde toplam oturum sayısını almak istiyorsanız, RAC için gv $ session'ı kullanın.



1
select count(*),sum(decode(status, 'ACTIVE',1,0)) from v$session where type= 'USER'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.