当我运行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次。
在日志中,我可以看到该批处理运行了一段时间(在循环中查询了一些记录),然后抛出了错误。
请帮助我解决这个问题。
答案 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”的值配置得太低 您可以通过步骤
解决它启动“ SQL Plus”
以“系统”身份登录
键入以下命令(以检查数据库是否正在使用spfile):
show parameter spfile
假设它表明您正在使用spfile,然后键入以下命令:
alter system set PROCESSES=300 scope = spfile
获得一些停机时间(没有人使用数据库)并重新启动Oracle数据库服务器(或者只是相关的Oracle数据库),或者您可以在记事本++中对其进行编辑