Multithreading Oracle sqlldr是否并行处理多个内嵌

Multithreading Oracle sqlldr是否并行处理多个内嵌,multithreading,oracle,sql-loader,Multithreading,Oracle,Sql Loader,我正在使用sqlldr将数据加载到oraclerac(在Linux上),并试图提高数据加载的性能。我正在使用“directpath”,并为sqlldr设置了“parallel=true”。此外,由于我的服务器是多核的,所以默认情况下多线程设置为true 现在,我正在考虑将每台服务器上的输入文件分成几个块,并并行加载它们。我了解到,可以在sqlldr的控制文件中列出多个内嵌文件。我的问题是: 如果我在一个控制文件中列出几个infle文件,并启动一个sqlldr实例,它是并行处理这些文件,还是按顺

我正在使用sqlldr将数据加载到oraclerac(在Linux上),并试图提高数据加载的性能。我正在使用“directpath”,并为sqlldr设置了“parallel=true”。此外,由于我的服务器是多核的,所以默认情况下多线程设置为true

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

  • 如果我在一个控制文件中列出几个infle文件,并启动一个sqlldr实例,它是并行处理这些文件,还是按顺序处理它们
因为我的另一个选择是并行启动与我在每台服务器上创建的块数相同的sqlldr实例,而每个sqlldr实例都有自己的控制文件,其中只列出一个内嵌文件。但只有当sqlldr按顺序处理多个内嵌文件时,此选项才有意义。

因为您使用的是“直接加载”,所以无法对其进行并行化

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

如果你愿意“放弃”,那么平行线将由你给出的参数“自动”为你管理


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

我想我需要并行启动几个sqlldr会话,每个会话都有自己的控制文件。检查:如何自动工作有一些文件lol吗?如果一次打开了太多的sqlldr会话,您知道会出现什么样的错误吗?