繁体   English   中英

Jasper报告导致SELECT语句出现CURSOR问题

[英]Jasper reports causing CURSOR issues with SELECT statements

我们将Jasper报表与Java一起用于我们的报表应用程序之一,并使用“ SELECT”查询来获取数据并使用Jasper报表模板生成报表。 它们是一堆旧查询,有些没有调优,其性能取决于所采用的参数。 过期日期范围,类别等

最近,我们遇到了奇怪的游标问题,该应用程序持有的游标数量一直很高,有时多达900个,这导致了一些严重的空间问题。 我们正在手动关闭它们以暂时解决此问题。 但是,问题又一次又一次地引起了人们的严重关注。

我对“ SELECT”语句的理解是,它们将隐式使用CURSOR方法,但是请确保一旦操作完成就将其关闭。 而且我们在应用程序方面没有太多控制权。

对问题进行调试/故障排除:

  • 使用的数据库-Oracle,Jasper-jasperreports-3.7.0,ODBC驱动程序-ojdbc14
  • 我们通过DBA运行查询,没有发现任何问题,同样,它只是常规的SELECT查询,我们没有显式创建任何游标。

  • 将数据库调用更改为只读状态,不起作用。

  • 看起来Jasper服务器使用常规的JDBC预准备语句-ODBC驱动程序-ojdbc14。

  • 不使用分页。

问题

我们在这个问题上没有领先优势,如果有人可以帮助我们,那就太好了。

编辑

SID = 4385具有以下带有打开游标计数的sql

SQL_ID COUNT(*)


  • djuwsn5numsqv 2
  • fw5920rbrun82 131 0wk7fbztn67zh 1
  • c29qmb59gggtv 1
  • 6y1ajq8xaw294 1
  • 9q3btvwzg96k6 487 ------- >>>
  • 3zzkryq60kua1 1
  • anp287ycdrnp6 1
  • 58tzy7dhpwnq4 1
  • cfgz3kzhx53jy 1
  • 0bxwy62tx9n2w 1
  • cygg3t2hc6mr2 12
  • 29s08m4n6xuwt 1

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM