我是否可以使用查询来获取可以同时使用的会话数量?我正在线程化一些数据库连接并收到错误:
ORA-02391:超出了同步SESSIONS_PER_USER限制
如何获得此限制的值?
答案 0 :(得分:2)
它的个人资料设置
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;
答案 1 :(得分:2)
从此查询开始,找出您正在使用的会话数
body
然后了解您的用户资料中允许的人数
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';
由于每个会话消耗资源,因此存在限制。如果您增加限制,则需要仔细规划生产系统,以免耗尽内存。
答案 2 :(得分:2)
获取该用户的个人资料
select profile from dba_users where username = :who;
然后获取该配置文件的资源限制
SELECT P1.LIMIT AS "Concurrent Sessions (Per User)"
FROM DBA_PROFILES P1
WHERE P1.PROFILE = :PROFILE
AND P1.RESOURCE_NAME = 'SESSIONS_PER_USER';
或者
在SQL Developer中,打开DBA面板并浏览用户&amp; “安全”下的个人资料
答案 3 :(得分:0)
虽然其他解决方案提供了有关更改用户会话限制的声明,但是诊断查询对我不起作用,尽管我是一个完整的初学者,并且可能执行不正确。以下查询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';
从那里开始,其余的链接站点或此处的其他解决方案可以帮助您改变对您的需求的限制。