当前位置:  数据库>oracle

关于ORA-02391问题的解决方法

    来源: 互联网  发布时间:2017-06-19

    本文导语: 关于ORA问题的分析和解决其实是一个很好的学习思路,抓住一个每一个ORA错误,然后进一步分析一些原因,总结,总会有不一样的收获,还是那句话,任何问题背后都是有原因的。 今天早上,开发的同事反馈说客户端中抛出了OR...

关于ORA问题的分析和解决其实是一个很好的学习思路,抓住一个每一个ORA错误,然后进一步分析一些原因,总结,总会有不一样的收获,还是那句话,任何问题背后都是有原因的。

今天早上,开发的同事反馈说客户端中抛出了ORA错误。

ORA-02391: exceeded simultaneous SESSIONS_PER_USER limit

希望我们能够帮忙看看是什么原因,怎么修复一下。

这个问题其实还是比较清晰的,就是在我们设置的profile中会定义对应session数限制,比如存在用户test,sessions_per_user为50,则test用户最多使用50个session.

默认的profile是DEFAULT ,在创建数据库之后会做基本的初始化,比如密码的过期时间等等

SQL> select *from DBA_PROFILES WHERE PROFILE='DEFAULT'
 PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT
 ------------------------------ -------------------------------- -------- ----------------------------------------
 DEFAULT                        COMPOSITE_LIMIT                  KERNEL  UNLIMITED
 DEFAULT                        SESSIONS_PER_USER                KERNEL  UNLIMITED
 DEFAULT                        CPU_PER_SESSION                  KERNEL  UNLIMITED
 DEFAULT                        CPU_PER_CALL                    KERNEL  UNLIMITED
 DEFAULT                        LOGICAL_READS_PER_SESSION        KERNEL  UNLIMITED
 DEFAULT                        LOGICAL_READS_PER_CALL          KERNEL  UNLIMITED
 DEFAULT                        IDLE_TIME                        KERNEL  UNLIMITED
 DEFAULT                        CONNECT_TIME                    KERNEL  UNLIMITED
 DEFAULT                        PRIVATE_SGA                      KERNEL  UNLIMITED
 DEFAULT                        FAILED_LOGIN_ATTEMPTS            PASSWORD UNLIMITED
 DEFAULT                        PASSWORD_LIFE_TIME              PASSWORD UNLIMITED
 DEFAULT                        PASSWORD_REUSE_TIME              PASSWORD UNLIMITED
 DEFAULT                        PASSWORD_REUSE_MAX              PASSWORD UNLIMITED
 DEFAULT                        PASSWORD_VERIFY_FUNCTION        PASSWORD NULL
 DEFAULT                        PASSWORD_LOCK_TIME              PASSWORD UNLIMITED
 DEFAULT                        PASSWORD_GRACE_TIME              PASSWORD UNLIMITED
默认的profile DEFAULT中sessions_per_user是Unlimited,但是实际中我们为了限制资源的使用,还是会自定义profile,其实还是基于profile DEFAULT
 sql> select username,profile from dba_users where username=’ USER_TEST’;
USERNAME                      PROFILE
 ------------------------------ ------------------------------
 USER_TEST                  APP_TEST
这个时候可以看到对应的最大session数就是20了。
SQL> select * from dba_profiles where profile='APP_TEST';
 PROFILE            RESOURCE_NAME                    RESOURCE LIMIT
 ------------------ -------------------------------- -------- ----------------------------------------
 APP_TEST    COMPOSITE_LIMIT                  KERNEL  DEFAULT
 APP_TEST    SESSIONS_PER_USER                KERNEL  20
 APP_TEST    CPU_PER_SESSION                  KERNEL  DEFAULT
 APP_TEST    CPU_PER_CALL                    KERNEL  DEFAULT
 APP_TEST    LOGICAL_READS_PER_SESSION        KERNEL  DEFAULT
 APP_TEST    LOGICAL_READS_PER_CALL          KERNEL  DEFAULT
 APP_TEST    IDLE_TIME                        KERNEL  DEFAULT
 APP_TEST    CONNECT_TIME                    KERNEL  DEFAULT
 APP_TEST    PRIVATE_SGA                      KERNEL  DEFAULT
 APP_TEST    FAILED_LOGIN_ATTEMPTS            PASSWORD DEFAULT
 APP_TEST    PASSWORD_LIFE_TIME              PASSWORD DEFAULT
 APP_TEST    PASSWORD_REUSE_TIME              PASSWORD DEFAULT
 APP_TEST    PASSWORD_REUSE_MAX              PASSWORD DEFAULT
 APP_TEST    PASSWORD_VERIFY_FUNCTION        PASSWORD DEFAULT
 APP_TEST    PASSWORD_LOCK_TIME              PASSWORD DEFAULT
 APP_TEST    PASSWORD_GRACE_TIME              PASSWORD DEFAULT
基本知识介绍完毕。

 如果抛出了ora-02391,我们可以通过alter user xxxxx  profile xxxx sessions_per_user  xxxx来进行解决。
 问题是这种错误在数据库日志中不会显示,所以DBA也无从知晓,只能等待反馈,得到反馈后再解决问题。
 我们可以变被动为主动。
 使用下面的监控语句来进行检查。
 比如我们设置阀值为90%,即每个user的对应的session超过profile中设定值的90%,就会返回结果。
select u.username||' with related profile '||p.profile||' has potential issue on '||p.resource_name ||' current value is '||s.cnt||' of '||p.limit
 from dba_profiles p,
 (select username,count(*)cnt from v$session where username is not null group by username) s,
 dba_users u
 where  p.RESOURCE_NAME = 'SESSIONS_PER_USER'
 and p.profile=u.profile
 and s.username=u.username
 and p.profile !='DEFAULT'
 and s.cnt*100/decode(p.limit,'DEFAULT',999)>=90;

返回结果类似下面的形式。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
APP_TEST with related profile PF_APP_TEST1 has potential issue on SESSIONS_PER_USER current value is 29 of 31
 APP_TEST2 with related profile PF_APP_TEST2 has potential issue on SESSIONS_PER_USER current value is 60 of 6

进一步改进,我们可以加入orabbix中,这样我们可能比开发还早收到报警邮件,问题处理也更有效。


    
 
 

您可能感兴趣的文章:

  • oracle ORA-01114、ORA-27067错误解决方法
  • Orcle的package中访问其它Schema的表报错ORA-00942解决方法
  • oracle远程连接服务器出现 ORA-12170 TNS:连接超时 解决办法
  • 解决报错ora-32035的方法分析
  • ORA-12514及ORA-28547错误解决方案
  • 基于ORA-12170 TNS 连接超时解决办法详解
  • 安装oracle出现error:ora-01031:insufficient privilleges的解决
  • plsql连接oracle数据库报ora 12154错误解决方法
  • zilong28提问:Tomcat3.2报错内容是Error occurs when connecting DB: ORA-00020: maximum number of processes(59) exceeded 我应该如何解决,先谢了
  • ORA-28002 Oracle 11g存在密码过期问题解决方案
  • Linux 下数据库oracle出现ORA-27102错误的解决办法
  • Oracle ORA-22908(NULL表值的参考)异常分析与解决方法
  • PHP连接Oracle错误ORA-24324服务句柄未初始化的解决方法
  • ORACLE出现错误1033和错误ORA-00600的解决方法
  • 如何解决ORA-01843与NLS_DATE_FORMAT问题
  • oracle 11g导出数据时报ORA 1455错误的处理方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • [Oracle] 浅析令人抓狂的ORA-01555问题
  • 关于Oracle游标的问题(ORA-01000: maximum open cursors exceeded)
  • oracle报错(ORA-00600)问题处理
  • Oracle 10g之ORA-32004问题
  • 出现ORA-01401和ORA-01008错误?
  • Eclipse连接Oracle数据库的ORA-00604 ORA-12705错误
  • Oracle不能删除表 ORA-00604 ORA-01422 错误
  • 如何得到带有ora的行的下一行
  • 如何配置 linux 下 oracle 的 listener .ora 和
  • 浅析如何在tnsnames.ora中配置监听
  • aq.executeQuery: ORA-00020: maximum number of processes (59) exceeded
  • Oracle 数据库闪回功能设置出现ORA-19809和ORA-19804错误
  • ORA-00947:Not enough values (没有足够的值)的深入分析
  • solaris10 安装 ora9.2.0.1 时报错
  • 在UNIX下,我的ORA817该怎么样才可以自己启动呀?
  • 谁能帮忙解释一下: ORA-01000 : maximun open cursors exceeded
  • 我在Linux7。3下面装了一个Oracle8i,但是现在启动不起来了,总是报错ORA-01031: insufficient privileges
  • 为什么我读取数据库时出现:ORA-00600: 内部错误代码,参数: [ttcgcshnd-1], [0], [],错误?
  • 在客户端配置TNS测试报错ORA-12170:TNS:连接超时


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3