0

我需要定期将 Oracle 10G 数据库表中的 1 亿条数据行(平均行长 ~ 100 字节)导出到 SQL 服务器(通过 WAN/VLAN,容量为 6MBits/sec)。到目前为止,这些是我尝试过的选项和一个快速总结。有没有人试过这个?还有其他更好的选择吗?就性能和可靠性而言,哪个选项是最好的?所花费的时间是通过对少量数据的测试计算出来的,然后推断它以估计所需的时间。

  1. 使用 SQL 服务器或 SSIS 包上的数据导入向导来导入数据。完成任务大约需要 150 小时。
  2. 使用 Oracle 批处理作业将数据假脱机到逗号分隔的平面文件中。然后使用 SSIS 包将此文件 FTP 到 SQL 服务器,然后直接从平面文件加载。这里的问题是预计以 GB 为单位运行的平面文件的大小。
  3. 虽然这个选项完全不同,但我什至考虑使用链接服务器在运行时直接查询 Oracle 数据以避免引入数据的选项。性能是一个大问题,我在创建表索引方面对 Oracle 数据库的控制有限。

问候,

单球

4

2 回答 2

1

我一直加载 50 GB 的文件。这就是我所做的。如果我有一个链接服务器,我使用 SSIS 加载表,只需确保您选择 FAST LOAD 并Table Lock选中 sute 表锁,否则它不会是真正的最小日志操作,您的数据库也必须在SimpleBulk恢复模式

看图片

替代文字

如果可以的话,我更喜欢 bcp out 然后 BCP in 或 BULK INSERT

于 2010-06-10T20:28:40.553 回答
0

考虑将流程分解成块,这样您就可以并行完成一堆事情。例如,如果将 100,000 条记录从 Oracle 导出到平面文件的时间等于复制文件的时间,也就是将文件导入 SQL 的时间,那么您可以想象构建一个系统来完成所有这些同时进行,就像一条流水线。这样,如果一件失败,您也不必重新开始。显然,这需要一些实验。您没有定义可能在某种程度上决定设计的“常规基础”,系统负载只是权衡之一。

干杯,布赖恩

于 2010-06-10T20:32:38.797 回答