热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Oracle技术之大量会话出现resmgr:becomeactive等待

当时客户求助,数据库状态不正常,连接到数据库无法正常操作,而且有时报错ORA-12537错误。ORA-12537:TNS:connectionclosedCau

当时客户求助,数据库状态不正常,连接到数据库无法正常操作,而且有时报错ORA-12537错误。ORA-12537: TNS:connection closedCau

在一个客户环境的数据库上发现这个问题。

当时客户求助,数据库状态不正常,连接到数据库无法正常操作,而且有时报错ORA-12537错误。

ORA-12537: TNS:connection closed

Cause: "End of file" condition has been reached; partner has disconnected.

Action: None needed; this is an information message.

导致这个错误的原因有很多,不好确定问题的原因,于是通过远程登陆数据库检查系统状态:

SQL> select count(*) from v$session;

COUNT(*)

----------

996

SQL> select event, count(*) from v$session group by event having count(*) > 10 order by 2 desc ;

EVENT COUNT(*)

------------------------- ----------

resmgr:become active 968

rdbms ipc message 12

数据库中会话数接近1000,而根据客户描述,正常情况下,连接数不到100。更奇怪的是,几乎所有的会话都在等待resmgr:become active这个事件。

根据事件名称就可以知道,这是一个资源管理区相关的等待事件,查询了一下metalink,发现如果系统资源管理区设置为INTERNAL_QUIESCE的状态,则所有SYS和SYSTEM以外的用户将处于这个等待事件,而无法进行任何的操作。Metalink文档ID 396970.1描述了这个现象。

但是,当前有几点和问题描述有所区别。首先,一般在进入WEEKNIGHT_WINDOW或WEEKEND_WINDOW窗口可能导致这个现象,而用户出现问题时是下午,因此排除了切换窗口导致资源管理器设置为INTERNAL_QUIESCE的可能性。第二,当发现等待事件为resmgr:become active后,,当时就查询了v$rsrc_plan视图,结果为空,说明当前系统并没有设置资源管理策略。

虽然问题的原因并不一定是切换窗口导致的资源管理器设置了资源策略,但是问题显然和资源管理器有直接的关系。Eygle以前也碰到过类似的现象,根据他的推测,可能是由于连接用户数过多,从而超过了Oracle内部的某个阈值,导致Oracle自动启用了资源管理策略。

虽然问题的真正原因还不是很清楚,不过解决这个问题并不复杂,虽然用户默认resource_manager_plan参数为空,但是Oracle内部仍然可能自动使用资源管理器,因此可以通过隐含参数来禁止资源管理器的启动:

设置初始化参数"_resource_manager_always_on"=false后,重启数据库,这个问题没有再出现。


推荐阅读
  • 本文介绍如何在Qt应用程序中让QLineEdit控件获得输入焦点,通过简单的代码示例和解释,帮助开发者更好地理解和使用这一功能。 ... [详细]
  • 数据结构入门:栈的基本概念与操作
    本文详细介绍了栈这一重要的数据结构,包括其基本概念、顺序存储结构、栈的基本操作(如入栈、出栈、清空栈和销毁栈),以及如何利用栈实现二进制到十进制的转换。通过具体代码示例,帮助读者更好地理解和应用栈的相关知识。 ... [详细]
  • 为已有数据表添加主键:MySQL与SQL Server的最佳实践
    本文介绍了在处理一个涉及数据交互的小项目时,如何为没有主键标识的老表添加主键。具体探讨了在SQL Server中为已有数据表添加自增主键或GUID主键的两种方法,并提供了详细的SQL语句及执行效果。 ... [详细]
  • 解析SQL查询结果的排序问题及其解决方案
    本文探讨了为什么某些SQL查询返回的数据集未能按预期顺序排列,并提供了详细的解决方案,帮助开发者理解并解决这一常见问题。 ... [详细]
  • 本文详细介绍了在 MySQL、SQL Server 和 Oracle 数据库中如何使用分组和排序功能。涵盖了聚集函数的应用、HAVING 子句的作用以及特定数据库中的独特方法,如 SQL Server 的 ROW_NUMBER() 函数和 Oracle 的相关特性。 ... [详细]
  • 本文详细介绍了 iBatis.NET 中的 Iterate 元素,它用于遍历集合并重复生成每个项目的主体内容。通过该元素,可以实现类似于 foreach 的功能,尽管 iBatis.NET 并未直接提供 foreach 标签。 ... [详细]
  • 本文介绍了一种在 MySQL 客户端执行 NOW() 函数时出现时间偏差的问题,并详细描述了如何通过配置文件调整时区设置来解决该问题。演示场景中,假设当前北京时间为2023年2月17日19:31:37,而查询结果显示的时间比实际时间晚8小时。 ... [详细]
  • 云计算的优势与应用场景
    本文详细探讨了云计算为企业和个人带来的多种优势,包括成本节约、安全性提升、灵活性增强等。同时介绍了云计算的五大核心特点,并结合实际案例进行分析。 ... [详细]
  • This pull request introduces the ability to provide comprehensive paragraph configurations directly within the Create Note and Create Paragraph REST endpoints, reducing the need for additional configuration calls. ... [详细]
  • 本文介绍如何在SQL Server中创建动态SQL存储过程,并提供详细的代码实例和解释。通过这种方式,可以更灵活地处理查询条件和参数。 ... [详细]
  • 在成功安装和测试MySQL及Apache之后,接下来的步骤是安装PHP。为了确保安全性和配置的一致性,建议在安装PHP前先停止MySQL和Apache服务,并将MySQL集成到PHP中。 ... [详细]
  • 本文探讨了使用C#在SQL Server和Access数据库中批量插入多条数据的性能差异。通过具体代码示例,详细分析了两种数据库的执行效率,并提供了优化建议。 ... [详细]
  • 方法:1 配置数据库basediros.path.abspath(os.path.dirname(__file__))  #获取当前文件的绝对路径appFlask(__name__ ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • 本文介绍了一个SQL Server自定义函数,用于从字符串中提取仅包含数字和小数点的子串。该函数通过循环删除非数字字符来实现,并附带创建测试表、存储过程以演示其应用。 ... [详细]
author-avatar
阿里根本_436
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有