Nous rencontrions des problèmes similaires pour les opérations de longue durée. L'opération serait commencée (et a également fait son travail et terminé), mais l'appel n'est jamais revenu. Finalement, nous avons pu retracer cela jusqu'à un pare-feu fermant la connexion au serveur Oracle.
Nous pourrions empêcher cela en utilisant le paramètre SQLNET.EXPIRE_TIME sur le serveur, qui "pingerait" périodiquement un client et empêcherait ainsi le pare-feu de fermer le port. Peut-être que cela aide également dans votre cas.