【发布时间】:2020-07-16 13:38:20
【问题描述】:
是否有一个查询可以用来获取我可以同时使用的会话数量?我正在处理一些数据库连接并收到错误:
ORA-02391: 超出同时 SESSIONS_PER_USER 限制
如何获得此限制的值?
【问题讨论】:
是否有一个查询可以用来获取我可以同时使用的会话数量?我正在处理一些数据库连接并收到错误:
ORA-02391: 超出同时 SESSIONS_PER_USER 限制
如何获得此限制的值?
【问题讨论】:
从这个查询开始,找出您正在使用的会话数
select count(*) from v$session where username='YourUser';
然后找出您的用户的个人资料中允许的数量
select profile from dba_users where username ='YourUser';
终于
select PROFILE, LIMIT
from dba_profiles
WHERE RESOURCE_NAME = 'SESSIONS_PER_USER'
AND PROFILE = 'YourUserProfile';
和修复
Alter profile YourUserProfile limit SESSIONS_PER_USER 100;
限制是有原因的,因为每个会话都会消耗资源。如果您增加限制,则需要对生产系统进行一些仔细的计划,以免内存不足。
【讨论】:
这是个人资料设置
SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'SESSIONS_PER_USER';
你可以改变它使用
ALTER PROFILE <profile name> LIMIT SESSIONS_PER_USER <number>;
或
ALTER PROFILE <profile name> LIMIT SESSIONS_PER_USER UNLIMITED;
【讨论】:
虽然其他解决方案提供了有关更改用户会话限制的语句,但诊断查询对我不起作用,尽管我是一个完整的初学者并且可能执行不正确。以下查询from Atlassian 帮助了我。
用于检查每个用户的会话数,以便您查看哪些用户已接近其限制:
SELECT count(*) as connections,
username
FROM v$session
GROUP BY username
ORDER BY username;
并检查该限制设置为:
SELECT DISTINCT username,
profile,
resource_name,
limit
FROM dba_profiles
NATURAL JOIN dba_users
WHERE resource_name = 'SESSIONS_PER_USER';
从那里,链接站点的其余部分或此处的其他解决方案可能有助于更改限制以满足您的需求。
【讨论】: