Mule 4.5连接Oracle 19c触发ORA-01000游标数超限问题求助
解决ORA-01000: maximum open cursors exceeded问题(Mule 4.5 + Oracle 19c)
环境信息
- Mule版本:4.5
- Oracle数据库:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production - 连接池:HikariCP 4.0.3
- JDBC驱动:ojdbc8 19.3.0.0
业务场景
调度器每日执行一次,拉取约12000条员工记录,经业务逻辑处理后发布至队列;ORA-01000错误发生在队列订阅端消费并处理数据时。
相关代码
数据库查询组件
<db:select doc:name="Get Emp Data" config-ref="Emp_Db_Config" > <db:sql ><![CDATA[select email,dob,substr(id, 3) as newid,id as oldid from employee.emp where employee# = :employeeNumber]]></db:sql> <db:input-parameters ><![CDATA[#[{ employeeNumber: vars.employeeNumber }]]]></db:input-parameters> </db:select>
全局数据库配置
<db:config name="Emp_Db_Config" doc:name="Database Config"> <db:data-source-connection dataSourceRef="emp-data-source" /> </db:config>
Spring数据源(Hikari连接池)配置
<bean id="emp-data-source" class="com.zaxxer.hikari.HikariDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> <property name="jdbcUrl" value="xxx"/> <property name="username" value="xxx"/> <property name="password" value="xxx"/> <property name="poolName" value="empConnectionPool"/> <property name="maximumPoolSize" value="30"/> <property name="connectionTimeout" value="60000"/> </bean>
POM依赖
<dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>4.0.3</version> </dependency> <dependency> <groupId>com.oracle.ojdbc</groupId> <artifactId>ojdbc8</artifactId> <version>19.3.0.0</version> </dependency>
已尝试操作
已知ORA-01000是打开游标数超过上限导致,理论上Mule会自动处理预编译语句和连接关闭,但查阅Mule连接泄漏相关问题后,已在数据库查询语句后添加如下转换组件:
<ee:transform doc:name="db connection fix"> <ee:message> <ee:set-payload><![CDATA[%dw 2.0 output application/json --- payload]]> </ee:set-payload> </ee:message> <ee:variables /> </ee:transform>
求助需求
如何解决该ORA-01000最大打开游标数超限问题?
内容的提问来源于stack exchange,提问作者GettingStarted With123
相关产品推荐
相关产品推荐

