我正在尝试使用Oracle ODI将记录插入到Azure sql数据仓库中,但是在插入某些记录后出现错误。
注意:我正在尝试插入1000条记录,但在800条之后出现错误。
错误消息:原因:java.sql.BatchUpdateException:112007;对于准备好的语句,每个会话超出了20 MB的内存限制。减少准备好的语句的数量或大小。
我正在尝试插入1000条记录,但在800条之后出现错误。
错误消息:原因:java.sql.BatchUpdateException:112007;对于准备好的语句,每个会话超出了20 MB的内存限制。减少准备好的语句的数量或大小。
答案 0 :(得分:0)
20MB是定义的限制,目前这是硬限制。减少批次大小当然可以帮助您解决此限制。
链接到容量限制。
https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-service-capacity-limits
答案 1 :(得分:0)
虽然Abhijith的回答在技术上是正确的,但我想提出一个替代方案,它可以为您提供更好的性能。
问题的根源在于,您选择了最糟糕的方法来将大量数据加载到Azure SQL数据仓库中。不管您要扔多少DWU,一长串INSERT语句的执行都会非常糟糕,因为它始终是单节点操作。
我的建议是,假设您的Oracle是本地部署,请按照以下方式调整ODI流程。
这将比您当前的方法快几个数量级。