Tridion CMS & Oracle: ORA-01000: 超过最大打开游标

Posted

技术标签:

【中文标题】Tridion CMS & Oracle: ORA-01000: 超过最大打开游标【英文标题】:Tridion CMS & Oracle: ORA-01000: maximum open cursors exceeded 【发布时间】:2012-08-17 09:37:40 【问题描述】:

希望有人可以在这里帮助我。

我们使用 Tridon CMS 来管理托管在 jBoss 和 Apache 上的网站。

我们已经使用 SDL Tridion 5.3 5 年了,突然我们遇到了它背后的 Oracle 数据库的错误。我们的大部分内容作为来自文件系统的普通 jsp 页面提供,但我们有一些组件通过调用 Tridion 的 Java API 提供服务,该 API 从 Oracle 数据库返回一个 html sn-p。 最近我们注意到其中一些 html sn-ps 没有被提供,并且在检查服务器日志文件时我们发现 Oracle 错误 ORA-01000: maximum open cursors exceeded 正在生成。 我们的最大光标设置为 300,因此我们将其增加到 350 以查看是否有帮助,但没有。 监视活动的 Oracle 会话,我们可以看到许多会话已达到最大游标,因此我们重新启动了应用服务器。这似乎有所帮助,但只是暂时的。达到最大游标阈值的会话数再次逐渐增加。昨天下午重启后不久,大约有 30 个会话,最大光标数,今天早上是 150 个。

很明显,最近发生了一些变化导致了这种情况,但我们不确定是什么原因。 Oracle 数据库不是我们通常可以访问的东西,当然也不是我们直接更改的东西——所有日常数据库操作都是通过 Tridion API 进行的。就 Tridion 的开发和发布而言,我们没有做任何不寻常的事情,因此与过去几年我们在那里所做的没有什么不同。我们网站的流量目前相对较低(过去明显更高),所以我们很确定那里没有问题。

我刚刚被告知可能会或可能不会连接的一件事 - 在问题出现前不久,我们的一个内部防火墙发生故障,但我们想不出一种可能导致我们看到的问题的方法.除了防火墙故障转移,我们找不到应用服务器和数据库之间连接的任何其他更改。

是否有人对我们可以在哪里寻找解决方案有任何建议?我们刚刚向 SDL 开了一张支持票,但目前他们和我们一样困惑。

谢谢。

【问题讨论】:

我们正在调查防火墙配置可能存在的问题,如下所示。当我知道完整的故事时会报告。 我们昨天(凌晨)未能回到原来的防火墙,尽管我们的基础设施人员似乎不认为这些数据正在通过所述防火墙。所以我们现在回到“原始”配置,虽然我们仍然在日志中看到最大打开游标的会话,但它们并没有以同样的惊人速度增加——每天大约 5-10 个,而不是 50 个-100。因此,对于问题的根源,我们仍然一无所知,但是我们所做的事情以及将允许的最大游标增加到 1000 已经使这个问题现在更易于管理。观看这个空间... 【参考方案1】:

我们过去曾在 IBM WebSphere 中遇到过类似的问题。在我们的场景中,问题的根本原因是由于防火墙的超时时间低于 AppServer 连接清理超时时间,导致空闲或陈旧连接的防火墙超时,并丢弃了应用程序服务器和 DB 之间的连接。

首先检查一下并确保这不是根本原因可能是值得的,因为我们花了很多时间分析应用程序日志和 Tridion api 等,所以我们花了一段时间才弄清楚这一点。我假设jBoss 有类似 WebSphere 的设置。

我们实施的解决方案是将Unused Timeout 设置为低于防火墙上的超时设置。这使 WebSphere Application Server 可以在防火墙丢弃未使用的连接之前清理它们。

【讨论】:

【参考方案2】:

我不确定 SDL Tridion R5.3,但在 2011 SP1 中存在一个已知问题,即在未显式关闭 ResultSet 时使用 JNDI(我相信与 WebSphere 结合使用)会使游标保持打开状态。

解决方案很简单,正如 Oracle 文档所述,增加允许的游标数量,或者如果您一直遇到您所说的问题,您可能会考虑不使用 JNDI。如果可能,您可以检查自己的代码以正确关闭 ResultSets(根据 JavaDoc for ResultSet:: 这不是必需的,尽管这似乎仅在不使用 JNDI 时才是正确的;使用 JNDI 时似乎会留下游标打开)。

【讨论】:

以上是关于Tridion CMS & Oracle: ORA-01000: 超过最大打开游标的主要内容,如果未能解决你的问题,请参考以下文章

ASP.Net CMS 推荐、Orchard、Sitefinity、Umbraco 还是 N2? [关闭]

Magnolia Cms Oracle 持久性

powershell 通过TCM URI查找Tridion项目的Tridion Content Manager WebdavUrl

powershell 通过TCM URI查找Tridion项目的Tridion Content Manager WebdavUrl

powershell 从Tridion-Powershell-Modules项目安装和配置Tridion-CoreService模块

powershell 安装Tridion CoreService模块。如http://tridion.stackexchange.com/q/3641/88中所述。这个脚本根本不稳定。