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