我需要复制存储在 sqlserver 中的表和数据(大约 5 年的数据,6200 个表),我使用 datastage 和 odbc 连接进行连接,并且 datstage 自动创建带有数据的表,但每个表需要 2-3 小时作为表非常大(0.5 gig,300+列和大约 400k 行)。
我怎样才能达到这个速度,因为我每天只能复制 5 张桌子,但在 30 天内我需要移动这 6000 张桌子。
我需要复制存储在 sqlserver 中的表和数据(大约 5 年的数据,6200 个表),我使用 datastage 和 odbc 连接进行连接,并且 datstage 自动创建带有数据的表,但每个表需要 2-3 小时作为表非常大(0.5 gig,300+列和大约 400k 行)。
我怎样才能达到这个速度,因为我每天只能复制 5 张桌子,但在 30 天内我需要移动这 6000 张桌子。
6000 个 0.5 Gb 的表大约是 3 TB。加索引。我可能不会使用 ODBC 连接,但问题是瓶颈在哪里。
您有一个来自 SQL Server 的提取阶段。您有从 SQL Server 框到 Oracle 框的传输。你有负担。
如果网络是限制能力,你可能最好解压缩到一个文件,压缩它,传输压缩文件,解压缩,然后加载它。Oracle 中的外部表是从平面文件(定界或固定长度)加载数据的最快方式,最好分布在多个物理磁盘上以分散负载且无需记录。
除非发生重大转变,否则我会忘记数据阶段。任何不提取或加载的东西都是多余的,需要尽量减少。
您可以同时并行传输单独的表吗?
我们定期将大型平面文件传输到 SQL Server 并并行运行它们 - 它在网络和 SQL Server 上使用更多带宽,但它们一起完成比串联更快。
您是否考虑过编写表模式脚本并在 Oracle 中创建它们,然后使用 SSIS 将数据批量复制到 Oracle 中?另一种选择是使用链接服务器和一系列“Select * INTO xxx”语句,这些语句将复制模式和数据(减去键约束),但我认为使用 6000 个表时性能会很差。