Sometimes, e.g when killing an idle connection, server might send an error packet to the client with sequence number = 0.
This does not play well with some clients, because Oracle (and some other) clients are not aware of out-of-band operations.
What happens in this case is
1. Idle connection is killed, error packet with seqno= 0 is sent to the client.
2. Error packet arrives to the client machine, and sits there in the OS socket buffers.
3. Client sends any command, e.g "SELECT 1", to the already dead connection. Client sets seqno=0 in his packet.
4. Client reads from socket, gets the packet from 1. with seqno=0, which it does not expect, since seqno is supposed to be incremented. Client complains, throws tantrums and exceptions.