Sql server 使用SSIS在Oracle和SQL Server之间进行数据传输的性能问题

Sql server 使用SSIS在Oracle和SQL Server之间进行数据传输的性能问题,sql-server,oracle,visual-studio,ssis,ssis-connection-manager,Sql Server,Oracle,Visual Studio,Ssis,Ssis Connection Manager,我正在尝试设计一个通过使用SSI将数据从Oracle传输到SQL Server 2016的流程。这样做的目的是从SQLServer2000实例中删除生产进程,在该实例中,传输是通过链接服务器实现的 我在SSIS过程中设计的传输速度很慢 我尝试使用“Orient OLE DB\Microsoft OLE DB Provider for Oracle”以及“Orient OLE DB\Microsoft OLE DB Provider for Oracle”OLEDB连接 结果是,传输跨越28228

我正在尝试设计一个通过使用SSI将数据从Oracle传输到SQL Server 2016的流程。这样做的目的是从SQLServer2000实例中删除生产进程,在该实例中,传输是通过链接服务器实现的

我在SSIS过程中设计的传输速度很慢

我尝试使用“Orient OLE DB\Microsoft OLE DB Provider for Oracle”以及“Orient OLE DB\Microsoft OLE DB Provider for Oracle”OLEDB连接

结果是,传输跨越28228472行的数据集的9934条记录大约需要一分钟

我尝试使用带有“Oracle连接管理器”的“Oracle源”组件

结果是,我可以测试连接,设计流程,甚至预览结果集。当我在Visual Studio中运行该包时,它会指出错误:“的组件元数据无法升级到组件的较新版本。PerformUpgrade方法失败。”

我需要能够在合理的时间内转移日期。
我使用的环境如下所示:

Visual Studio:Visual Studio 2019 16.2.0
SSIS项目兼容模式为:SQL Server 2016

目标SQL Server:SQL Server 2016(13.0.5233.0)
SSIS包将在以下服务器上运行:SQL Server 2016(13.0.5264.1)

Oracle环境是:
Oracle数据库12c标准版12.1.0.2.0版-64位生产

我建议对oledb目的地使用“表或视图-快速加载”模式

并使用“upsert”最小化数据写入I/O

如果可能,使用“完全缓存”作为查找模式(RAM要求)

这可能会有帮助


我设法解决了性能问题,并确保传输总量数据

我放弃了使用OLEDB连接,转而使用“ADO NET”连接。 我使用“.Net Providers\OracleClient数据提供程序”作为源,使用“.Net Providers\SqlClient数据提供程序”作为目标

ADO.net源代码和连接提供了一致的数据传输性能,并获得了所有记录。 使用OLEDB连接时,SQL Server之间的传输仍然工作得更好。
ADO源和OLEDB目标之间的传输需要非unicode到unicode的转换。

那么,您是要将数据传输到SQL Server 2000还是SQL Server 2016实例?你的问题从2000年开始,到2016年结束。当然,2000已经失去支持很长时间了,所以这值得澄清。我正在尝试将数据从Oracle传输到SQL Server 2016。将进程从SQL Server 2000删除到受支持的系统。我修改了开篇文章以提供更清晰的描述。我们使用“Orient OLE DB\Microsoft OLE DB Provider for Oracle”从Oracle读取数据,并使用“Orient OLE DB\SQL Server Native Client 11.0”写入SQL Server,在9分钟内传输了约1300万数据。确保检查服务器之间的防火墙和网络问题。尝试将输出写入本地文件(测试源),然后将文件上载到目标(测试目标),即如果SSIS包正在第三台服务器上运行。该包做什么?@Ezlo感谢您的建议,我会进一步调查。在尝试将文本文件写入服务器时,性能同样很慢。我将咨询我们的基础设施部门。
为了回答您的问题,我确实在开发服务器上工作。谢谢,这确实大大提高了速度。我完全忘记启用它了。在第一个一百万条记录之后,速度明显减慢,但效果更好。:)是否有可能放置有效的数据块?我的SSIS包在440万行(2800万行)时运行得更快,但在该标记处停止。请在运行时检查内存使用情况,如果SSIS进程停止在4GB左右,则可能需要使用部分缓存模式。我的传输当前看起来是这样的:对于该结构,我看不到部分缓存的选项。如果我插入一个查找,性能会回到最初的缓慢状态。更奇怪的是,令人担忧的是,它会停止在440万条记录上,尽管实际上应该返回2800万条记录,而机器内存只有一小部分被使用: