簡體   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