0
回答
各位大牛,使用spring Jdbctemplate连接oracle数据库,应用在运行一段时间后,后台报游标使用过多的错误

各位大牛,使用spring Jdbctemplate连接oracle数据库,应用在运行一段时间后,后台报游标使用过多的错误。其中,oracle数据库,每个节点数的游标数已设置成2000个,有4个节点,足够给应用使用的,为什么在使用spring Jdbctemplate连接oracle数据库做应用的时候,还是报:SQL state [72000]; error code [1000]; ORA-01000: maximum open cursors exceeded; nested exception is java.sql.SQLException: ORA-01000: maximum open cursors exceeded 

其中datasourcemanager.xml的配置如下:

xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
    "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
        <bean id="manager" class="xxx.v2.c3p0.ComboPooledDataSource" destroy-method="close">
                <property name="driverClass"><value>oracle.jdbc.driver.OracleDriver</value></property>
                <property name="jdbcUrl"><value>jdbc:oracle:thin:@xx.xx.xx.xx:1521/xx</value></property>
                <property name="user"><value>xxxx</value></property>
                <property name="password"><value>xxxxxx</value></property>       
                <property name="minPoolSize"><value>3</value></property>
        <property name="maxPoolSize"><value>10</value></property>
        <property name="maxIdleTime"><value>18000</value></property>
        <property name="acquireIncrement"><value>5</value></property>
        <property name="maxStatements"><value>128</value></property>
        <property name="initialPoolSize"><value>5</value></property>
        <property name="idleConnectionTestPeriod"><value>18000</value></property>
        <property name="acquireRetryAttempts"><value>10</value></property>
        <property name="breakAfterAcquireFailure"><value>false</value></property>
        <property name="testConnectionOnCheckout"><value>true</value></property>
        </bean>
        <bean id="mq" class="xx.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass"><value>oracle.jdbc.driver.OracleDriver</value></property>
        <property name="jdbcUrl"><value>jdbc:oracle:thin:@xx.xx.xx.xx:1521/xx</value></property>
        <property name="user"><value>xxx</value></property>
        <property name="password"><value>xxxxxx</value></property>
        <property name="minPoolSize"><value>1</value></property>
        <property name="maxPoolSize"><value>3</value></property>
        <property name="maxIdleTime"><value>18000</value></property>
        <property name="acquireIncrement"><value>5</value></property>
        <property name="maxStatements"><value>28</value></property>
        <property name="initialPoolSize"><value>2</value></property>
        <property name="idleConnectionTestPeriod"><value>18000</value></property>
        <property name="acquireRetryAttempts"><value>10</value></property>
        <property name="breakAfterAcquireFailure"><value>false</value></property>
        <property name="testConnectionOnCheckout"><value>true</value></property>
        </bean>
</beans>

举报
stars_dream
发帖于1年前 0回/258阅

以下是问题补充:

  • @stars_dream :它使用游标过多的语句却是: select ‘TABLE’as table_type from dual union select 'view' as table_type from dual union select 'SYNONYM' as table_type from dual (1年前)
  • @stars_dream :这个语句并没有在我的代码里提到的 (1年前)
顶部