sqlldr desde java nunca termina

Toni Circuns
09 de Febrero del 2010
Hola,

tengo un script en un fichero .bat que ejecuta un sqlldr de Oracle para cargar un fichero a una tabla.

Si lo ejecuto desde la consola todo funciona bien, pero si lo ejecuto desde la aplicación java, con este código

Código:

rt = Runtime.getRuntime();
File f = new File(LlistaParametres.getInstance().getDirectoriShells().replace('/', '\'));
Process process = rt.exec(sb.toString().replace('/', '\'),null, f);
process.wait();

donde sb contiene la ruta al fichero .bat a ejecutar y f contiene el directorio donde estan todos mis ficheros (.bat i .txt a cargar)

el proceso nunca acaba, aunque empieza.

El sqlldr se ejecuta, inserta una parte de los registros y se queda parado, como bloqueado (no hay ningún bloqueo en la base de datos). Incluso crea el fichero de log, pero està en blanco.

Nada se mueve hasta que paro la aplicación Java, en mi caso paro el Tomcat. Entonces el sqlldr acaba su trabajo bien. El log es idéntico al que genera cuando se ejecuta directament por consola.

Si no pongo el wait() pasa exactamente lo mismo, con la única diferencia que la aplicación java sigue su curso.

No tengo ni idea de que esta pasando y necesito que alguien me oriente un poco.

Estoy usando el mismo código para ejecutar otros ficheros .bat y funciona perfectamente. Espera a que acabe el proceso y sigue la ejecución normal.

Muchas gracias de antemano,

TONI.

Ana
07 de Julio del 2010
llevo dias con el mismo problema. He de lanzar una serie de scripts con sqlldr y arranca la ejecución pero se queda a medias. Unas veces avanza mas que otras pero no consigo que termine. Encontraste solución? Te agradeciría si me la comentaras. Gracias.