[英]Jasper reports causing CURSOR issues with SELECT statements
我们将Jasper报表与Java一起用于我们的报表应用程序之一,并使用“ SELECT”查询来获取数据并使用Jasper报表模板生成报表。 它们是一堆旧查询,有些没有调优,其性能取决于所采用的参数。 过期日期范围,类别等
最近,我们遇到了奇怪的游标问题,该应用程序持有的游标数量一直很高,有时多达900个,这导致了一些严重的空间问题。 我们正在手动关闭它们以暂时解决此问题。 但是,问题又一次又一次地引起了人们的严重关注。
我对“ SELECT”语句的理解是,它们将隐式使用CURSOR方法,但是请确保一旦操作完成就将其关闭。 而且我们在应用程序方面没有太多控制权。
对问题进行调试/故障排除:
我们通过DBA运行查询,没有发现任何问题,同样,它只是常规的SELECT查询,我们没有显式创建任何游标。
将数据库调用更改为只读状态,不起作用。
看起来Jasper服务器使用常规的JDBC预准备语句-ODBC驱动程序-ojdbc14。
不使用分页。
问题 :
我们在这个问题上没有领先优势,如果有人可以帮助我们,那就太好了。
编辑
SID = 4385具有以下带有打开游标计数的sql
SQL_ID COUNT(*)
sql_id = 9q3btvwzg96k6继续打开新的游标。
本地静态游标已为您关闭。
您可以看到如下所示的max open cursors参数:
show parameter open_cursor
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
open_cursors integer 300
内部块内打开的游标显然没有隐式关闭。 如果它们已关闭,则不会超过打开的游标的最大数量。
如果光标已经打开,则不要关闭它,只需使用它即可。
无论如何,最快的解决方法是
alter system set open_cursors = 1000 scope=both;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.