java.sql.SQLException: ORA-01012: not logged on

来源:互联网 发布:钓鱼岛主权 知乎 编辑:程序博客网 时间:2024/05/18 02:08

最近在忙于整合代码.其中的工作主要是把原来的jsp页面,改造成flex的.为了方便开发和测试.使用spring配置了一个简易数据源.配置如下:

<!-- 定义数据源 -->
 <bean id="dataSource"
  class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  <property name="driverClassName">
  <value>${jdbc.driver}</value>
  </property>
  <property name="url">
  <value>${jdbc.url}</value>
  </property>
  <property name="username">
  <value>${jdbc.username}</value>
  </property>
  <property name="password">
  <value>${jdbc.password}</value>
  </property>
  <property name="initialSize">
  <value>${jdbc.initialSize}</value>
  </property>
  <property name="maxActive">
  <value>${jdbc.maxActive}</value>
  </property>
  </bean>

系统在使用一段时间后,时常出现数据库异常,异常信息如下:

Caused by: java.sql.SQLException: ORA-01012: not logged on

 at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
 at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
 at oracle.jdbc.ttc7.Oopen.receive(Oopen.java:120)
 at oracle.jdbc.ttc7.TTC7Protocol.open(TTC7Protocol.java:586)
 at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:385)
 at oracle.jdbc.driver.OracleConnection.privateCreateStatement(OracleConnection.java:772)
 at oracle.jdbc.driver.OracleConnection.createStatement(OracleConnection.java:712)
 at org.apache.commons.dbcp.DelegatingConnection.createStatement(DelegatingConnection.java:224)
 at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.createStatement(PoolingDataSource.java:205)
 at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:390)
 ... 34 more

参考http://forum.springsource.org/archive/index.php/t-31110.html

的说明是DBCP 数据源的一个bug.DBCP 在数据库中断后,重连数据库方面存在BUG.

更改数据源采用proxool方式,问题解决.

proxool的配置方式可参考以下页面:

http://www.blogjava.net/lizongbo/archive/2006/04/07/39835.html

 

原创粉丝点击