【问题标题】:SQL*Loader stuck after loading 4.2 billion recordsSQL*Loader 在加载 42 亿条记录后卡住
【发布时间】:2018-10-12 02:34:55
【问题描述】:

我们遇到了 sql loader 的问题。我们正在尝试使用 Sql Loader 在某些条件的基础上将大约 46 亿行(近 340 GB)的数据文件加载到 2 个 oracle 表中。但是在加载了 42 亿条记录之后,SQL 加载器进程正在完成,即使剩余的记录仍有待加载,也不会抛出任何错误。

也没有废弃或不良记录。 SQL Loader 可以加载的记录数是否有限制?在任何地方都找不到任何此类记录。 如果有人对此问题有任何线索,请告诉我。

谢谢!!

【问题讨论】:

  • 我也面临这个问题,除了我没有完成,它每秒都在打印“逻辑记录计数 4290000000”。可能是因为我将 ROWS 设置设置为 10000000。似乎它一直在重试插入下一个 10000000 条记录。此外,仍有网络活动,表明它一直在重试。

标签: sql-loader


【解决方案1】:

2³² 的值是 4294967295,接近 42 亿。

所以从你的问题描述中我只能说也许 sqlldr 的LOAD 默认值实际上是2³² - 1,并且这个值存储在32 位上。

【讨论】:

  • 你真是个天才。结合我遇到的问题,这非常有意义。因为它最多可以插入 4290000000,但不能插入 4300000000。那么,有没有人知道解决这个问题的方法? Oracle 知道吗?
【解决方案2】:

我已经测试了 Benoit 关于内部 LOAD 整数对于 +42 亿行来说太小的假设。它是正确的。将我的源文件切割成 -42 亿行的文件并使用 append 插入它们时,插入效果很好。

因此,这不是数据库限制,如下所示: https://forums.oracle.com/message/11201322 (也在那里发布了我的结论)

此外,Oracle 论坛上的 BluShadow 建议尝试使用外部表。还没有测试。

【讨论】:

    猜你喜欢
    • 2013-09-01
    • 2018-10-18
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 2016-04-22
    • 2018-09-29
    • 2018-09-11
    相关资源
    最近更新 更多