Oracle sqlldr 是不是并行处理多个 INFILE

Posted

技术标签:

【中文标题】Oracle sqlldr 是不是并行处理多个 INFILE【英文标题】:Does Oracle sqlldr process multiple INFILE in parallelOracle sqlldr 是否并行处理多个 INFILE 【发布时间】:2014-11-06 02:23:27 【问题描述】:

我正在使用 sqlldr 将数据加载到 Oracle RAC(在 Linux 上),并且我正在尝试提高数据加载的性能。我正在使用“直接路径”,并且为 sqlldr 设置了“parallel=true”。此外,由于我的服务器是多核的,因此默认情况下将多线程设置为 true。

现在,我正在考虑将每个服务器上的输入文件拆分为几个块,然后并行加载它们。我了解到可以在 sqlldr 的控制文件中列出多个 INFILE 文件。我的问题是:

如果我在单个控制文件中列出多个 INFILE 文件,并启动 一个 sqlldr 实例,它是并行处理这些文件,还是按顺序处理它们?

因为我的另一个选择是并行启动与我在每台服务器上创建的块数量一样多的 sqlldr 实例,而每个 sqlldr 实例都有自己的控制文件,其中仅列出一个 INFILE 文件。但是这个选项只有在 sqlldr 顺序处理多个 INFILE 文件时才有意义。

【问题讨论】:

我想我需要并行启动几个 sqlldr 会话,每个会话都有自己的控制文件。检查:docs.oracle.com/database/121/SUTIL/ldr_modes.htm#SUTIL1344 【参考方案1】:

由于您使用的是“直接加载”,因此无法并行化它。

直接加载“锁定”表/分区的高水位标记,并将数据放在那里......因此 - 另一个进程无法并行锁定它。并行进程必须等待当前负载完成。 (我假设您不控制加载到的分区..如果您可以控制它-您可以获得更好的细粒度调整..但通常要加载的数据不会像文件那样分为文件分区,如果你使用分区的话...)

如果您“放弃”,并行将由您提供的参数“自动”为您管理..

但是 - 我建议您继续使用“直接加载”,因为它可能比现有的任何其他加载方法快得多(尽管它的锁对它来说非常“大”)。

【讨论】:

如何自动工作是否有一些文档大声笑?如果同时打开太多 sqlldr 会话,您知道会出现什么样的错误吗?

以上是关于Oracle sqlldr 是不是并行处理多个 INFILE的主要内容,如果未能解决你的问题,请参考以下文章

Oracle SQLLDR - 使用参数文件指定多个日志、dsc、坏文件

oracle 客户端没有sqlldr 怎么添加

我的sqlldr怎么老是报错呢??大神们求解???

sqlserver中datetime怎样sqlldr加载到oracle

在linux下安装sqlldr命令

批量数据文件用sqlldr导数据到oracle中