Dead database connections can be detected and killed by SQL*Net if you specify the SQLNET.EXPIRE_TIME=n parameter in your SQLNET.ORA file (usually in $TNS_ADMIN). This parameter will instruct SQL*Net to send a probe through the network to the client every n minutes, if the client doesn't respond, it will be killed.
NOTE: This parameter is only useful on the database server side, specifying it on a client workstation will have no effect.
How does one enable dead connection detection ?