系统从MySql数据库移植到了Oracle数据库。由于本人对Oracle数据库不是很了解。
除了数据转换了过来,其他配置也不懂做
现在系统运行偶尔会出现连接超时异常和游标超出异常。
这些问题在使用MySql数据库时都没有出现过的。
异常如下:
2010-12-02 10:58:25,576 ERROR [STDERR] com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.net.ConnectException
MESSAGE: Connection refusedSTACKTRACE:java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
at java.net.Socket.connect(Socket.java:452)
at java.net.Socket.connect(Socket.java:402)
at java.net.Socket.<init>(Socket.java:309)
at java.net.Socket.<init>(Socket.java:153)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:271)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2771)
at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
另一个游标超出的异常是
2010-11-29 10:58:19,013 ERROR [org.jboss.web.localhost.Engine] ----- Root Cause -----
com.create.webengine.wf.admin.workflowadmin.exceptions.WorkflowAdminException: Error in getPageToDoWorkItems....
SQLException while getWorkItems from wf_work_item :
ORA-01000: maximum open cursors exceeded at com.create.webengine.wf.admin.workflowadmin.ejb.WorkflowAdminEJB.getPageToDoWorkItems(WorkflowAdminEJB.java:676)
at sun.reflect.GeneratedMethodAccessor115.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:660)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186)
at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:77)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:107)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:282)请问这些异常是否可以通过修改Oracle的配置来解决?
相关配置能否告诉我。谢谢了!
除了数据转换了过来,其他配置也不懂做
现在系统运行偶尔会出现连接超时异常和游标超出异常。
这些问题在使用MySql数据库时都没有出现过的。
异常如下:
2010-12-02 10:58:25,576 ERROR [STDERR] com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.net.ConnectException
MESSAGE: Connection refusedSTACKTRACE:java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
at java.net.Socket.connect(Socket.java:452)
at java.net.Socket.connect(Socket.java:402)
at java.net.Socket.<init>(Socket.java:309)
at java.net.Socket.<init>(Socket.java:153)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:271)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2771)
at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
另一个游标超出的异常是
2010-11-29 10:58:19,013 ERROR [org.jboss.web.localhost.Engine] ----- Root Cause -----
com.create.webengine.wf.admin.workflowadmin.exceptions.WorkflowAdminException: Error in getPageToDoWorkItems....
SQLException while getWorkItems from wf_work_item :
ORA-01000: maximum open cursors exceeded at com.create.webengine.wf.admin.workflowadmin.ejb.WorkflowAdminEJB.getPageToDoWorkItems(WorkflowAdminEJB.java:676)
at sun.reflect.GeneratedMethodAccessor115.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:660)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186)
at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:77)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:107)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:282)请问这些异常是否可以通过修改Oracle的配置来解决?
相关配置能否告诉我。谢谢了!
解决方案 »
- ORACLE 10G(64位) plsql安装问题 求解决方案
- 请问 oracle有记录操作日记的吗?如何查询在界面上操作的日志语句?
- oracle 表查询问题[急~在线等]
- 一条sql语句。。
- oracel 9i的下载地址????
- oracle9i中imp导入后好像不能覆盖原来的数据,为什么?如何才能覆盖呢?
- 一个关于在ORACLE中批量插入的问题
- 关于sql语句的问题
- ◆◆◆◆◆◆今是我生日::特意来散分~~~◆◆◆^-^有者有分~◆◆◆
- varchar2和nvarchar2有什么不同吗???
- 请问关于oracle登录的问题
- 速度!请教大家一问题:设置Dbms_Output.put_line()输出长度大小的命令是什么?
ORA-01000: maximum open cursors exceeded
打开的游标超过系统设置的数量 应该是你开了过多的游标没有释放(close cursor)
1.这个不一定是你游标没有关闭的原因,有可能是你同一个session请求的游标的数目过多,但是没有及时的释放,比如你使用循环打开了很多的游标,但是你循环里面没有释放游标,释放操作没有完成,这样游标的请求数目和你循环的次数成正比,这样的应用是可以优化的。
2.如果你不想优化应用程序,你可以使用使用这个语句查询下,当前系统的最大的游标请求数目.
select sid,count(*) from v$open_cursor group by sid
然后加大游标上限参数
alter system set open_cursor=(>上面的最大值) sope=spfile
最后
重启数据库
楼主的connection driver配置对吗?
SQL>show parameters open_cursors;
是不是设置过小,把它设置大一些,比如说500
SQL>alter system set open_cursors=400;
如果仍然报错,可能是你的代码中打开游标没有关闭造成的。
SQL>show parameters open_cursors;
是不是设置过小,把它设置大一些,比如说1000
SQL>alter system set open_cursors=500;
如果仍然报错,可能是你的代码中打开游标没有关闭造成的。
我查询了,Oracle默认游标打开数为300(安装好后没动过)。如果解决办法是去手动的更改这个游标打开数
那是治标不治本,同样的程序在MYSQL和SQL Server都不会有异常,迁移到Oracle时运行一段时间就会出现。
真是头疼啊
你最好检查一下你的应用,看看statement对象是不是打开过多,而没有及时关闭。