We hadden soortgelijke problemen voor langlopende operaties. De operatie zou worden gestart (en deed ook zijn werk en eindigde), maar het telefoontje kwam nooit terug. Uiteindelijk konden we dit herleiden tot een firewall die de verbinding met de Oracle-server verbrak.
We zouden dit kunnen voorkomen door de parameter SQLNET.EXPIRE_TIME op de server te gebruiken, die periodiek een client zou "pingen" en zo zou voorkomen dat de firewall de poort sluit. Misschien helpt dit ook in jouw geval.