【问题标题】:Transfer large amount of data from DB2 to Oracle?将大量数据从 DB2 传输到 Oracle?
【发布时间】:2024-01-11 09:32:01
【问题描述】:

我每天都需要将大量数据(大约几百万条记录)从 db2 传输到 oracle 数据库。你能建议最好的执行方法吗?

【问题讨论】:

    标签: oracle db2 etl data-transfer


    【解决方案1】:

    DB2 将允许您选择 Oracle 作为复制目标。这可能是每天最有效和最简单的方法,它还消除了您的“中间容器”反对意见。

    请参阅this introduction(以及在线文档中的更多内容)了解更多信息。

    【讨论】:

    • 看来这是我需要的。
    • 毫无疑问这会奏效。以我的经验,这将比文件导出/导入慢得多。
    【解决方案2】:

    如果你只是在谈论速度,那就这样做吧。

    将 DB2 数据转储到平面文件所需的时间。

    将平面文件吸入 Oracle 需要多长时间。

    这是您的基准,而且是免费的。如果您可以使用 ETL 工具击败它,那么请确定该工具的成本是否值得。

    对于像这样的简单 ETL,我发现几乎没有什么可以按时完成。

    这样做的缺点只是一般的文件操作 BS...

    • 你怎么知道什么时候读取文件
    • 你怎么知道你得到了所有的行
    • 出现故障时如何恢复

    所有这些小小的“好处”通常都会很快得到回报。当然,我是在开玩笑。它们并不总是那么漂亮。它们通常对于顺利运行过程至关重要。

    【讨论】:

    • 如果我不想有中间文件。我需要数据库到数据库的交互。所以回答你的问题: 1. 阅读按计划进行 2. 复制表中的所有行时 3. 出现某种异常时的 Mb? PS:对不起我的英语
    • 您要求性能最佳的方法。现在您要消除性能最佳的方法。人们不介意提供帮助,只要他们的帮助不是浪费时间。如果这是一个限制,您应该将其包含在问题中。
    • 好吧,我意识到我的错误,对不起,我的问题没有这个限制。我认为应该有比中间容器更有效的方式,因此没有提到这个限制。
    • 取决于你对高效的定义。这对你意味着什么?
    • 时间成本,我需要在给定的时间窗口内完成数据传输。我认为,当在 db2 中读取数据和在 oracle 中写入数据的过程同时(并行)执行时,会比首先将所有数据从 db2 导出到文件,然后文件传输然后从文件导入到 oracle 时更快。
    【解决方案3】:

    将数据转储到分隔文件。通过直接加载 sqlldr 作业加载到 Oracle。不性感,但很快。如果您可以在同一个子网上最好(通过网络推送数据不是您想要的)。在 cron 上进行设置,添加有关错误的电子邮件警报

    【讨论】: