我们有一个由Fuse Fabric中的Apache Aries包装的OracleXADataSource(如this article中所示)。如果我不断向服务器发送大量请求,它会开始抛出以下错误:
Caused by: java.sql.SQLException: Listener refused the connection with the following error:
ORA-12519, TNS:no appropriate service handler found
当我使用以下查询检查会话时,在Oracle中的每个请求之后,它会在当前利用率下显示增加的数量。
select resource_name, current_utilization, max_utilization, limit_value
from v$resource_limit
where resource_name in ('sessions', 'processes', 'transactions');
CURRENT_UTILIZATION MAX_UTILIZATION LIMIT_VALUE
processes 545 768 800
sessions 553 774 1222
transactions 0 0 UNLIMITED
针对此问题的大多数建议都是为了增加Oracle中的进程和会话限制,但这会暂时解决问题,直到我们达到一定的负载I我很害怕。
到目前为止,我发现/尝试了以下内容:
CURRENT_UTILIZATION MAX_UTILIZATION LIMIT_VALUE
processes 355 768 800
sessions 363 774 1222
transactions 122 122 UNLIMITED
我尝试将池添加到OracleXADataSource,但没有任何改变(它已被弃用,但我认为它仍然有效。我们遗憾的是没有UCP jar,所以我无法测试它那个)
<property name="connectionCachingEnabled" value="true"/>
<property name="connectionCacheProperties">
<props merge="default">
<prop key="InitialLimit">1</prop>
<prop key="MinLimit">1</prop>
<prop key="MaxLimit">1</prop>
</props>
</property>
答案 0 :(得分:0)
不幸的是,我无法使用白羊座来解决这个问题。我认为这是一个错误。但是我设法使用Atomikos正常工作,我强烈推荐。比使用Aries&#39;更直接。内置自动代理行为:您声明所有内容,以便了解实际发生的情况。
<bean id="transactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close">
<property name="forceShutdown" value="false" />
</bean>
<bean id="userTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
<property name="transactionTimeout" value="300" />
</bean>
<bean id="jtaTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager" ref="transactionManager" />
<property name="userTransaction" ref="userTransaction" />
</bean>
<bean id="dataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean">
<property name="uniqueResourceName" value="oracledb" />
<property name="xaDataSource">
<bean class="oracle.jdbc.xa.client.OracleXADataSource">
<property name="URL" value="jdbc:oracle:thin:@${db.host}:${db.port}:${db.sid}"/>
<property name="user" value="${db.schema}" />
<property name="password" value="${db.password}" />
</bean>
</property>
</bean>