获取ORA-02391:SESSIONS_PER_USER限制

时间:2015-09-11 14:17:30

标签: database oracle

我是否可以使用查询来获取可以同时使用的会话数量?我正在线程化一些数据库连接并收到错误:

  

ORA-02391:超出了同步SESSIONS_PER_USER限制

如何获得此限制的值?

4 个答案:

答案 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; “安全”下的个人资料

browsing users and profiles in SQL Developer

答案 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';

从那里开始,其余的链接站点或此处的其他解决方案可以帮助您改变对您的需求的限制。