ORA-01000: 超出打開游標的最大數

baojian322 13年前發布 | 5K 次閱讀 finddup.pl

1、查看數據庫的參數值open_cursors

2、經常在實際中遇到的問題


說明:發生此種情況的原因主要是在應用程序中某個業務在操作數據庫的時候,在打開游標后,并沒有正確的釋放(關閉),造成游標溢出!

更改游標大小的方式如下:


然后重啟數據庫使其生效。

但是這種方法一般是不能從根本上解決問題的,過段時間還會發生類似的情況!

3、來個小實驗測試(java code)


運行上述代碼的過程中,使用sql監控數據庫的情況,就可以查詢到造成該問題的sql,如下所示:

(1)


(2)、


上面SID(1)步當中的sid

此時后臺的運行已經拋出異常,如下所示:


4、解決方法

javacode里面模式是一個查詢語句,進行循環,但是并沒有及時關閉Statement,所以造成了游標溢出的情況,這個也是解決問題的入手處,就是根據你上面的sql監控,可以找到sql,然后找到應用代碼上的位置,確認是否有問題即可!

以上只是個人能力所想,不對之處還請各位多多指教!
附加sql腳本:

select o.sid, osuser, machine, count(*) num_curs,SQL_TEXT
 from v$open_cursor o, v$session s
 where user_name = 'AISINO' and o.sid=s.sid
 group by o.sid, osuser, machine ,SQL_TEXT
 order by num_curs desc;
select q.sql_text from v$open_cursor o, v$sql q where q.hash_value=o.hash_value and o.sid = 13 group by q.sql_text; 

</div>

 本文由用戶 baojian322 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!