0

在处理 try-catch 范围内的文件中的少量记录后,出现“ORA-01000:超出最大打开游标”问题。我在侧面 try-catch 范围内有 3 个 select 语句和 5 个存储过程调用(在 store proc 中有 insert 语句)。这是我的池配置文件配置: <db:pooling-profile maxPoolSize="10" preparedStatementCacheSize="0" /> 在存储过程中使用默认配置

<db:stored-procedure doc:name="insert into SPCHG_SERVICE_RENDERED" doc:id="d5b44d97-0f00-4377-a98d-b35a6b78df9e" config-ref="Database_Config" transactionalAction="ALWAYS_JOIN">
            <reconnect count="3" />
            <db:sql ><![CDATA[{call schema.ARRAY_INSERT_SERVICE(:serviceData,:error_num,:error_msg)}]]></db:sql>
            <db:input-parameters ><![CDATA[#[{"serviceRenderedData" : payload}]]]></db:input-parameters>
            <db:output-parameters >
                                
                                <db:output-parameter key="error_num" type="INTEGER" />
                                <db:output-parameter key="error_msg" type="VARCHAR" />
                            </db:output-parameters>
        </db:stored-procedure>

运行时:4.3 修复/避免此问题的任何输入。注意:DBA 团队不会增加游标数量,从 MuleSoft 端寻找解决方案。

4

1 回答 1

0

确保您使用存储过程的输出,即使不期望结果集,通过将操作放在一个单独的流程中,该流程使用 VM 进行,如文档建议的那样。

或者在 db 操作之后放置一个 foreach 。

于 2022-03-01T21:31:04.147 回答