将6000个表和数据从sql server复制到oracle ==>最快的方法?

时间:2010-04-28 00:23:32

标签: sql-server oracle datastage

我需要复制存储在sqlserver中的表和数据(大约5年的数据,6200个表),我使用datastage和odbc连接来连接和datstage自动创建带有数据的表,但是它每个需要2-3个小时表格非常大(0.5 gig,300 +列和大约400k行)。

我如何以这个速度达到这个目标,我每天只能复制5张桌子,但是在30天内我需要移动这6000张桌子。

3 个答案:

答案 0 :(得分:6)

每张0.5 Gb的6000张表约为3 TB。加索引。 我可能不会选择ODBC连接,但问题是瓶颈在哪里。

您有来自SQL Server的提取阶段。您可以从SQL Server框传输到Oracle框。你有负担。

如果网络是限制功能,您可能最好提取到文件,压缩文件,传输压缩文件,解压缩,然后加载它。 Oracle中的外部表是从平面文件(分隔或固定长度)加载数据的最快方法,最好是分布在多个物理磁盘上以分散负载而无需记录。

除非发生重大转变,否则我会忘记数据流。任何未提取或加载的东西都是过量的,以便最小化。

答案 1 :(得分:2)

您可以同时并行传输单独的表吗?

我们经常将大型平面文件传输到SQL Server,并且我并行运行它们 - 它在网络和SQL Server上使用更多带宽,但它们在一起完成的速度比在系列中更快。

答案 2 :(得分:2)

您是否考虑过编写表模式并在Oracle中创建它们然后使用SSIS将数据批量复制到Oracle中?另一种选择是使用链接服务器和一系列“Select * INTO xxx”语句,这些语句可以复制模式和数据(减去键约束),但我认为6000个表的性能会非常可怜。