>> TNS listener doesn't recognize the network failure
Correct, listener is only responsible for passing connection requests to the database instance, not for monitoring sessions.
The pmon process is responsible for monitoring the state of sessions in the database instance. When a session gets disconnected pmon should step in and tidy up, rolling back any uncommitted work.
>> small procedure ... some complex DMLs and this takes a while
So maybe its not so small, in terms of the amount of work that its doing. It will probably take a while to roll back the uncommitted work.