我使用命名管道和Oracle SQL*Loader将大约 2000 万行加载到数据库中。
管道的来源来自使用简单FileOutputStream写入管道的 Java 应用程序。
可以观察到,Oracle SQL*Loader 需要在 Java 应用程序上等待很长时间才能产生足够的数据进行加载。
等待很好。但是,Oracle SQL*Loader 在加载大约 100 万行后总是存在,输出如下:
SQL*Loader-501: Unable to read file (upipe.dat)
SQL*Loader-560: error reading file
SQL*Loader-2026: the load was aborted because SQL Loader cannot continue.
在这种情况下,Java 将抛出带有信息的 IOException:
Exception in thread "main" java.io.IOException: Broken pipe
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:284)
它在Linux环境下运行。知道为什么会发生这种情况吗?
谢谢。