SQLを使用して、Oracleデータベースに許可されている最大接続数を確認する最良の方法は何ですか?最後に、現在のセッション数と許可されている合計数を示したいと思います。たとえば、「現在、80接続のうち23接続が使用されています」。
SQLを使用して、Oracleデータベースに許可されている最大接続数を確認する最良の方法は何ですか?最後に、現在のセッション数と許可されている合計数を示したいと思います。たとえば、「現在、80接続のうち23接続が使用されています」。
回答:
Oracleデータベースがサポートする接続数の決定には、いくつかの異なる制限があります。最も簡単な方法は、SESSIONSパラメータとV $ SESSIONを使用することです。
データベースが許可するように構成されたセッションの数
SELECT name, value
FROM v$parameter
WHERE name = 'sessions'
現在アクティブなセッションの数
SELECT COUNT(*)
FROM v$session
ただし、前述したように、データベースレベルとオペレーティングシステムレベルの両方で、共有サーバーが構成されているかどうかによって、他にも潜在的な制限があります。共有サーバーが無視される場合、SESSIONSパラメータの制限に達する前に、PROCESSESパラメータの制限に達する可能性があります。また、各セッションには一定量のRAMが必要なため、オペレーティングシステムの制限に達する可能性があります。
v$session
ビューに対する権限を持っていないことを意味します。DBAにその権限を付与するよう依頼する必要があります。ほとんどの場合、そのオブジェクトのみの役割または直接付与も機能するが、select any dictionary
特権が必要ですselect_catalog_role
。
セッションから導出されたパラメータのプロセスのパラメータと、あなたが最大プロセス数を変更したときにそれに応じて変化します。詳細については、Oracleのドキュメントを参照してください。
セッションに関する情報のみを取得するには:
select current_utilization, limit_value
from v$resource_limit
where resource_name='sessions';
CURRENT_UTILIZATION LIMIT_VALUE ------------------- ----------- 110 792
これを試して、両方の情報を表示します。
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 ------------- ------------------- --------------- --- -------- プロセス96 309 500 セッション104 323 792
このソースに基づいて、これはうまくいくと思いました。
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
しかし、ジャスティンの洞窟は正しいです。このクエリはより良い結果をもたらします:
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'
注:これは質問の一部にのみ回答します。
許可されているセッションの最大数を知りたいだけの場合は、sysplusとしてsqlplusで実行できます。
SQL> show parameter sessions
これにより、次のような出力が得られます。
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
sessionsパラメータは必要なものです。
Oracleのセッション、プロセスを一目で見られるように、v $ resource_limitビューは私にとって非常に興味深いものです。
https://bbdd-error.blogspot.com.es/2017/09/check-sessions-and-processes-limit-in.html