我们有一个带有Oracle 11 Client的SSIS包,我们将以30分钟到1小时的运行时间运行我们的日常查询。
我们不得不升级我们的oracle客户端,因为我们的其他oracle源之一已升级。
升级到Oracle 12c后,我们的日常工作运行时间增加了。 oracle DBA表示,它并非并行运行,因为它只占用一个处理器。
当我们从SQL Developer或toad运行相同的查询时,它并行运行。但是如果我们从SSIS OLEDB Source组件运行它并不是并行运行的。
我不太清楚这种行为。任何解决方案都会有帮助。如果需要,请向我提出更多说明。
我试图搜索这个主题,我没有找到很多信息,但我认为它是基于OLEDB连接管理器中提供的OLEDB连接字符串。
查看以下Oracle文档,它可能会为您提供一些见解:
在上面的链接中,他们在分布式事务部分中提到:
DistribTX
属性指定是否启用会话以在分布式事务中登记。有效值为0
(禁用)和1
(已启用)。默认值为1,表示为分布式事务登记启用了会话。为分布式事务登记启用的会话无法运行使用Oracle数据库的直接路径加载和并行DML功能的语句。这些语句作为传统的路径序列语句执行。
我不确定这是否有帮助,但尝试一下也不错。
不使用OLEDB Source从oracle读取,最好使用Oracle Attunity Connectors for SSIS,以保证比OLEDB更高的性能来源:
针对Oracle和Teradata的Attunity高速连接器已被Microsoft选中,并包含在SQL Server Integration Services(SSIS)中。