日常开发异常问题解决
来源:互联网 发布:安卓写轮眼优化教程 编辑:程序博客网 时间:2024/05/19 23:15
ONE: ORA-01000: maximum open cursors exceeded
空中测试策略数据库操作功能,每秒发送25条,每条执行至少6次查询和更改操作,使用ibatis框架作为数据底层,几乎10秒钟就会报
“ORA-01000: maximum open cursors exceeded”异常。
后来经查询是因为PreparedStatement打开太多导致,但详细原因无法找到,只好baidu了。
将其ibatis改成jdbc,按照网上的一些解决方案
1. 强制关闭PreparedStatement,每执行一次查询就关闭一次,新的查询重新打开。
2. 手动connection.commit(),也有人说,可能是数据库版本太低,导致无法自动提交所致。
3. 也有人说,是因为循环里面多次打开PreparedStatement,我的代码内没有循环,这个原因排除。
以上方法都没有解决我的问题,无意间查看了dataSource的配置,将poolPreparedStatements改为false解决(无论ibatis和jdbc都好使了)。
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@172.16.4.44:1521:KONG"/>
<property name="username" value="sms1"/>
<property name="password" value="4sgsdgre"/>
<property name="maxActive" value="50"/>
<property name="maxWait" value="20"/>
<property name="poolPreparedStatements" value="false"/>
<property name="defaultAutoCommit" value="true"/>
</bean>
poolPreparedStatements
protected boolean poolPreparedStatementsPrepared statement pooling for this pool.
When this property is set to true both PreparedStatements and CallableStatements are pooled.
看来,这个poolPreparedStatements导致打开了了无数PreparedStatements,切记切记。
参考资料:DBCP配置
- 日常开发异常问题解决
- jeecg框架日常开发问题解决方法
- jeecg框架日常开发问题解决方法
- 日常问题解决
- 日常开发遇到的问题解决办法-java
- 日常遇到的问题解决
- MVC项目日常问题解决记录
- ios开发——日常之XCode 文件后面带有问号的问题解决
- 【日常犯错】Eclipse出现异常
- Oracle 日常开发(一)
- peoplesoft日常开发笔记
- Android日常开发经验教训
- 日常开发工具
- php 日常开发积累
- 日常开发手册
- iOS开发日常技术
- 日常使用开发辅助工具
- web开发日常
- BSS段,数据段,代码段,堆内存和栈 (转)
- C++模板使用介绍
- virtualization 相关的问题
- Fuzzing技术的研究
- WebService开发流程(AAXIS、JAX-WS、XFire框架)
- 日常开发异常问题解决
- window dos基本操作命令介绍
- 四种流行的AJAX框架jQuery,Mootools,Dojo,ExtJS的对比
- Java 运算符
- MongoDB入门需知(For PHPer)
- 编码规范
- 打白条也能到银行取现金
- 用asio传文件
- gpio模拟I2C总线c代码实现