OracleÖдò¿ªÓα곬³ö×î´óÖµ
ÏòOracleÊý¾Ý¿â±íÖвåÈëÊ®¼¸ÍòÌõÊý¾Ý£¬¿ÉÊǵ±²åÈë3Íò¶àÌõºó£¬³ÌÐò¾ÍÅ×
Java´úÂë
ORA-01000 maximum open cursors exceeded
ORA-01000 maximum open cursors exceeded
Òì³£ÐÅÏ¢¡£GoogleÁËÒì³£ÐÅÏ¢£¬µÃÖªÕâÑùµÄ´íÎóºÜÈÝÒ׳öÏÖÔÚJava´úÂëÖеÄÖ÷ÒªÔÒòÊÇ£ºJava´úÂëÔÚÖ´ÐÐconn.createStatement()ºÍconn.prepareStatement()µÄʱºò£¬Êµ¼ÊÉ϶¼ÊÇÏ൱ÓÚÔÚÊý¾Ý¿âÖдò¿ªÁËÒ»¸öcursor¡£ÓÈÆäÊÇ£¬Èç¹ûÄãµÄcreateStatementºÍprepareStatementÊÇÔÚÒ»¸öÑ»·ÀïÃæµÄ»°£¬¾Í»á·Ç³£ÈÝÒ׳öÏÖÕâ¸öÎÊÌâ¡£ÒòΪÓαêÒ»Ö±ÔÚ²»Í£µÄ´ò¿ª£¬¶øÇÒûÓйرա£
Ò»°ãÀ´Ëµ£¬ÎÒÃÇÔÚдJava´úÂëµÄʱºò£¬createStatementºÍprepareStatement¶¼Ó¦¸ÃÒª·ÅÔÚÑ»·ÍâÃ棬¶øÇÒʹÓÃÁËÕâЩStatmentºó£¬¼°Ê±¹Ø±Õ¡£×îºÃÊÇÔÚÖ´ÐÐÁËÒ»´ÎexecuteQuery¡¢executeUpdateµÈÖ®ºó£¬Èç¹û²»ÐèҪʹÓýá¹û¼¯£¨ResultSet£©µÄÊý¾Ý£¬¾ÍÂíÉϽ«Statment¹Ø±Õ£¨statementName.close()£©¡£
ÏÂÃ潫´úÂ븽ÉÏ
Å×Òì³£´úÂ룺
Java´úÂë
Connection conn = DBUtils.getConnection();//»ñÈ¡Êý¾Ý¿âÁ¬½Ó
PreparedStatement pstmt = conn.prepareStatement("select statement...");
ResultSet rset = pstmt.executeQuery();
while (rset.next()) {
PreparedStatement pst=conn.prepareStatement("insert statement...");//¿ªÆôÒ»¸öÓαê
//pst.setXXX()...;
pst.executeUpdate();
pst=conn.prepareStatement("another insert statement");//ÔÙ¿ªÆôÒ»¸öÓαê
//pst.setXXX()...;
pst.executeUpdate();
pst=conn.prepareStatement("third insert statement");//¿ªÆôÒ»¸öÓαê
//pst.setXXX()...;
&
Ïà¹ØÎĵµ£º
±¾ÎĽéÉÜÁËÈçºÎÀûÓÃsqlplus copy ÃüÁîÔÚÁ½¸öÊý¾Ý¿â¼äתÒÆÊý¾Ý
ÎÞÐèÓõ½dblink, Á½¸öÊý¾Ý¿â¼ä²»ÐèÖ±½ÓͨѶ£¬µ±È»£¬ÐèÒªÓÐÒ»¸öclient¶ÎÄÜͬʱÒÔsqlplusÁ¬½Óµ½Á½¸öÊý¾Ý¿â
ÎÊÌâµÄÌá³ö
ÂÛ̳ÉÏÓÐÈËÌá³öÕâÑùµÄÎÊÌ⣺
¼ÙÉèÓÐÁ½¸öÊý¾Ý¿â,·Ö±ð´¦ÓÚÁ½¸ö²»Í¬µÄÍøµ«ÓÐÒ»¸ö¿Í»§»ú°²ÁËÁ½¿éÍø¿¨¿ÉÒÔͬʱÁ¬µ½Á½¸öÊý¾Ý¿âÇëÎÊÈç¹û²»Í¨¹ýÔÚ¿ ......
×¢£ºÏÂÃæÖ»ÊÇÎÒ´ÖÁӵļǼһÏ£¬×Ô¼ºÔÚ¿ª·¢ÖÐËùѧµÄÒ»²¿·Ö×ÊÁÏ£¡
1£® µÚÒ»¡¢ÊÇÏÂÔØÒ»¸ö“Oracle9i¿Í»§¶Ë¾«¼ò°æ.exe”¿Í»§¶Ë£¬È»ºó°ÑËü°²×°µ½CÅÌÏÂÃæ¡£
È»ºó°ÑÎÒÃÇ×Ô¼ºÅäÖúõĔ tnsnames.ora”Îļþ£¬¸´¸ÇC:\oracle\ora90\network\adminÏÂÃæµÄtnsnames.oraÎļþ¡£
2£® ÔÚVS2005¿ª·¢¹¤¾ßÖ ......
Ò». °²×°Ç°µÄ×¼±¸
1.ÔÚÊý¾Ý¿â·þÎñÆ÷ÉÏÒÔAdministratorÉí·ÝµÇ¼µ½Windows
2.Í£Ö¹ËùÓÐOracleÏà¹ØµÄ·þÎñ¡£ÕâЩ·þÎñÃû³Æͨ³£ÊÇÒÔOracle´òÍ·
3.Í£Ö¹Distributed Transaction Coordinator·þÎñ
4.±¸·ÝÓëOracleÊý¾Ý¿âÏà¹ØµÄËùÓÐÎļþ£¨°üÀ¨OracleÊý¾Ý¿âÈí¼þ¼°Êý¾ÝÎļþ£©£¬°ÑÕâЩÎļþ°´ÔÓеÄĿ¼½á¹¹¸´ÖƵ½°²È«µÄµØ·½£¬²¢× ......
¶ÔÓÚx$µÄÇé¿ö
SQL> grant select on sys.x$bh to t1;
grant select on sys.x$bh to t1
ERROR at line 1:
ORA-02030: can only select from fixed tables/views
¶ÔÓÚfixed tables/viewsÖ»ÄÜselect
Èç¹ûÏë°Ñx$bhµÄselectȨÏÞgrant¸øÆäËûÓû§Ôõô°ìÄØ,¿ÉÒÔ±äͨһÏÂ
SQL> create view xbh as select * from sys.x$ ......
start with....connect by prior....×Ó¾ä
ÀýÈ磺employee±íÖеÄÊý¾ÝÈçÏ£º
employee_id name manager_id
1   ......