Tridion CMS和Oracle:ORA-01000:超出最大开放游标数

Tha*_*oke 5 oracle tridion ora-01000

希望有人可以帮助我.

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

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

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

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

有没有人对我们在哪里寻找解决方案有任何建议?我们刚刚用SDL开了一张支持票,但此刻他们和我们一样困惑.

谢谢.

Ram*_*m G 7

我们过去曾经历过与IBM WebSphere类似的问题.在我们的方案中,问题的根本原因是防火墙因空闲或过时连接而超时,并且丢弃了应用程序服务器与数据库之间的连接,因为防火墙的超时低于AppServer连接清理超时.

首先检查这个并确保这不是根本原因可能是值得的,因为我们花了很多时间分析应用程序日志和Tridion api等,所以需要一段时间来解决这个问题.我认为jBoss有类似的像WebSphere一样设置.

我们实现的解决方案是Unused Timeout在防火墙上设置低于超时设置.这允许WebSphere Application Server在防火墙丢弃之前清理其未使用的连接.


Bar*_*man 4

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

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