【问题标题】:Getting ORA-02391: SESSIONS_PER_USER limit获取 ORA-02391: SESSIONS_PER_USER 限制
【发布时间】:2020-07-16 13:38:20
【问题描述】:

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

ORA-02391: 超出同时 SESSIONS_PER_USER 限制

如何获得此限制的值?

【问题讨论】:

    标签: database oracle


    【解决方案1】:

    从这个查询开始,找出您正在使用的会话数

    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;
    

    限制是有原因的,因为每个会话都会消耗资源。如果您增加限制,则需要对生产系统进行一些仔细的计划,以免内存不足。

    【讨论】:

    • v$session 中的 count(*) 并不完全准确,因为它不包括递归 DML 会话,但通常可用。
    • 当尝试运行 select SESSIONS_PER_USER from dba_profiles where profile='YourUserProfile'; .我收到 SESSIONS_PER_USER 的无效标识符错误。
    【解决方案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;
    

    【讨论】:

    • 这将增加分配该配置文件的每个用户的限制。您可能想创建一个新的配置文件并根据需要进行调整...
    【解决方案3】:

    获取该用户的个人资料

    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 面板并浏览“安全”下的用户和配置文件

    【讨论】:

      【解决方案4】:

      虽然其他解决方案提供了有关更改用户会话限制的语句,但诊断查询对我不起作用,尽管我是一个完整的初学者并且可能执行不正确。以下查询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';
      

      从那里,链接站点的其余部分或此处的其他解决方案可能有助于更改限制以满足您的需求。

      【讨论】:

        猜你喜欢
        • 2018-03-16
        • 1970-01-01
        • 1970-01-01
        • 2016-08-20
        • 2021-01-18
        • 2015-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多