Spring Batch-ORA 12516 SQLState 66000-TNS:Listener无法使用具有匹配协议栈的处理程序

时间:2018-08-24 04:46:57

标签: java oracle11g spring-batch

当我运行Spring批处理来处理100多个记录时,出现以下错误,

 "Listener Refused the connection with the following error: ORA-12516,  
  TNS:Listener could not available handler with matching protocol stack". 

但是当我运行该批处理以处理少于50条记录时,它可以正常工作。

在我的阅读器的批处理前步骤中,我查询数据库以获取记录。

例如如果我从数据库中获得100条记录,那么使用循环,我将从每条记录中提取一个特定字段,并使用该特定字段查询另一个表。因此,第二个查询在for循环中运行了100次。

在日志中,我可以看到该批处理运行了一段时间(在循环中查询了一些记录),然后抛出了错误。

请帮助我解决这个问题。

2 个答案:

答案 0 :(得分:0)

更改了我的数据源bean
<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${database.driverClassName}" />
    <property name="url" value="${database.url}" />
    <property name="username" value="${database.username}" />
    <property name="password" value="${database.password}" />
</bean>

对此

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
  <property name="driverClassName" value="${database.driverClassName}" />
    <property name="url" value="${database.url}" />
    <property name="username" value="${database.username}" />
    <property name="password" value="${database.password}" />
    <property name="connectionProperties"   value="initialSize=1,maxTotal=10" />
</bean> 

答案 1 :(得分:0)

OnlyGod团队-

Oracle数据库服务器“ PROCESSES”的值配置得太低 您可以通过步骤

解决它
  1. 启动“ SQL Plus”

  2. 以“系统”身份登录

  3. 键入以下命令(以检查数据库是否正在使用spfile):

    show parameter spfile
    
  4. 假设它表明您正在使用spfile,然后键入以下命令:

    alter system set PROCESSES=300 scope = spfile
    
  5. 获得一些停机时间(没有人使用数据库)并重新启动Oracle数据库服务器(或者只是相关的Oracle数据库),或者您可以在记事本++中对其进行编辑