[英]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.