欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
BlogJava - 天道酬勤 - 關(guān)于ORACLE游標的問(wèn)題(ORA-01000: maximum open cursors exceeded)

關(guān)于ORACLE游標的問(wèn)題(ORA-01000: maximum open cursors exceeded)

昨天在開(kāi)發(fā)過(guò)程中,經(jīng)常碰到ORA-01000: maximum open cursors exceeded這個(gè)錯誤。一看報錯,知道是游標超過(guò)最大數了,以前在做DB2開(kāi)發(fā)的時(shí)候,也曾遇到過(guò)類(lèi)似的問(wèn)題。雖然解決了,但一直沒(méi)弄清楚,JDBC是如何和數據庫發(fā)生交互的?又是在什么時(shí)候打開(kāi)數據庫游標的?腦袋就跟漿糊一樣,說(shuō)來(lái)真是慚愧啊

昨天google了一把,終于解開(kāi)一點(diǎn)迷惑了。

下面的片斷轉載于www.itpub.net

[TIP]關(guān)于Java開(kāi)發(fā)中使用Oracle數據庫的一點(diǎn)注意事項(原創(chuàng ))

很多朋友在Java開(kāi)發(fā)中,使用Oracle數據庫的時(shí)候,經(jīng)常會(huì )碰到有ORA-01000: maximum open cursors exceeded.的錯誤。

實(shí)際上,這個(gè)錯誤的原因,主要還是代碼問(wèn)題引起的。
ora-01000: maximum open cursors exceeded.
表示已經(jīng)達到一個(gè)進(jìn)程打開(kāi)的最大游標數。

這樣的錯誤很容易出現在Java代碼中的主要原因是:Java代碼在執行conn.createStatement()和conn.prepareStatement()的時(shí)候,實(shí)際上都是相當與在數據庫中打開(kāi)了一個(gè)cursor。尤其是,如果你的createStatement和prepareStatement是在一個(gè)循環(huán)里面的話(huà),就會(huì )非常容易出現這個(gè)問(wèn)題。因為游標一直在不停的打開(kāi),而且沒(méi)有關(guān)閉。

一般來(lái)說(shuō),我們在寫(xiě)Java代碼的時(shí)候,createStatement和prepareStatement都應該要放在循環(huán)外面,而且使用了這些Statment后,及時(shí)關(guān)閉。最好是在執行了一次executeQuery、executeUpdate等之后,如果不需要使用結果集(ResultSet)的數據,就馬上將Statment關(guān)閉。

對于出現ORA-01000錯誤這種情況,單純的加大open_cursors并不是好辦法,那只是治標不治本。實(shí)際上,代碼中的隱患并沒(méi)有解除。
而且,絕大部分情況下,open_cursors只需要設置一個(gè)比較小的值,就足夠使用了,除非有非常特別的要求。

我昨天犯的錯誤就是把創(chuàng )建statement放到了循環(huán)之內,結果導致cursor猛增,到達了數據庫設置的最大數。
雖然解決了問(wèn)題,也清楚了游標是何時(shí)創(chuàng )建的,但還有幾個(gè)問(wèn)題比較迷糊。
1、通過(guò)查詢(xún),JDBC是將所有的查詢(xún)結果一次性放到ResultSet中,還是一次只放一定數目的記錄?例如,查詢(xún)結果為2000條數據,JDBC是一次性將2000條數據放到結果集中,還是分批放置呢?

2、當通過(guò)ResultSet.next(),移動(dòng)結果集指針時(shí),此時(shí)是否還與數據庫發(fā)生交互?

posted on 2005-01-27 10:15 候鳥(niǎo)南飛 閱讀(4092) 評論(9)  編輯 收藏 收藏至365Key

評論

# re: 關(guān)于ORACLE游標的問(wèn)題(ORA-01000: maximum open cursors exceeded)  回復   

連接和statement使用完畢之后應該及時(shí)關(guān)閉,這個(gè)應該是粉簡(jiǎn)單的道理吧.
2005-01-27 10:53 | eamoi

# re: 關(guān)于ORACLE游標的問(wèn)題(ORA-01000: maximum open cursors exceeded)  回復   

鳥(niǎo)人
還沒(méi)回到阿?
2005-02-17 21:33 | 不至于

# re: 關(guān)于ORACLE游標的問(wèn)題(ORA-01000: maximum open cursors exceeded)  回復   


2005-03-29 15:05 |

# re: 關(guān)于ORACLE游標的問(wèn)題(ORA-01000: maximum open cursors exceeded)  回復   

The article is great. I got the same error and keep scratching my head till I found your page. Keep it up!
2005-04-28 15:39 | San

# re: 關(guān)于ORACLE游標的問(wèn)題(ORA-01000: maximum open cursors exceeded)  回復   

繼續下去啊。這個(gè)問(wèn)題應該是一個(gè)比較典型的問(wèn)題了吧,繼續討論阿
2005-05-10 18:27 | 芨芨草

# re: 關(guān)于ORACLE游標的問(wèn)題(ORA-01000: maximum open cursors exceeded)  回復   

pst.close();
rs.close();

只要及時(shí)關(guān)閉應該就可以了吧?
2005-07-05 15:23 | plutohades

# re: 關(guān)于ORACLE游標的問(wèn)題(ORA-01000: maximum open cursors exceeded)  回復   

首先結果集resultset在你的java程序處。其中有個(gè)fetchsize設置,這個(gè)表示每次從數據庫處取多少條記錄到resultset.
2006-03-14 09:42 |

# re: 關(guān)于ORACLE游標的問(wèn)題(ORA-01000: maximum open cursors exceeded)  回復   

當通過(guò)ResultSet.next(),移動(dòng)結果集指針時(shí),此時(shí)是否還與數據庫發(fā)生交互?

不發(fā)生交互,數據庫執行完查詢(xún)后,已經(jīng)把查詢(xún)結果交給ResultSet了,以后的操作,和數據庫無(wú)關(guān)。
2006-03-15 10:26 | jing

# re: 關(guān)于ORACLE游標的問(wèn)題(ORA-01000: maximum open cursors exceeded)  回復   

交互,如果1個(gè)查詢(xún)有10000條記錄,resultset中只有fetchsize條,當next時(shí)還會(huì )在一定時(shí)機去交互
2006-03-17 10:44 |
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
關(guān)ORACLE Cursor的問(wèn)題ORA-01000: maximum open cursors exceeded
oracle ORA-01000:maximum open cursors exceeded
出錯"ORA-01000: maximum open cursors exceeded"怎么解決
Oracle基本參數(OPEN_CURSORS)
深入淺出Oracle學(xué)習筆記(2)
系統投產(chǎn)前,Oracle數據庫優(yōu)化思路和9個(gè)典型問(wèn)題
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久