名前付きパイプとOracleSQL* Loaderを使用して、約2,000万行をデータベースにロードしています。
パイプのソースは、単純な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環境で動作します。なぜこれが起こるのか考えていますか?
ありがとう。