Stavamo riscontrando problemi simili per le operazioni a lungo termine. L'operazione sarebbe iniziata (e anche fatto il suo lavoro e terminato), ma la chiamata non è mai tornata. Alla fine siamo stati in grado di risalire a un firewall che chiudeva la connessione al server Oracle.
Potremmo impedirlo utilizzando il parametro SQLNET.EXPIRE_TIME sul server, che periodicamente "pinge" un client e quindi impedisce al firewall di chiudere la porta. Forse questo aiuta anche nel tuo caso.