This content has been marked as final. Show 4 replies
Have you looked into the possibility of implmenting Dead Client Detection (DCD) on the server?
It may be beneficial in your case if this situation is reasonably common or expected as the database does not know that the client has "gone away".
Yes we already tried with DCD, we set "SQLNET.EXPIRE_TIME=1", but in this case this is not helping. Maybe because the transaction lock on database is still present. If I check table v$session, in particular row there is still set TADDR value.
We can use profile idle_time, but this is not very good solution, because influence on all inactive sessions.
Does exist some parameter or database job that cleans lost transactions or TX locks?
Is there a firewall between the database server and the middle tier client?
I'm not an expert in firewalls, but I have seen reports in the past of firewalls interfering with DCD (or also being the need for it!).
Just to confirm, you did configure the DCD (sqlnet.expire_time) in the sqlnet.ora file on the server? Sometimes people configure it on the client by mistake.
I'm not aware of any job (unless a manual job or procedure has been created) that would clean things up as you mention (other than the normal PMON cleaning up failed user processes/threads).
I also agree that creating and assigning a profile with idle_time would be a bad idea as connections in the connection pool could/would appear idle but really they should not be closed as they are eligible to be given to a client request.
Yes I configure "sqlnet.expire_time" on server side. I also tried if it is working on some isolation example and with network sniffing tool.
In general this is working good, but in this particular situation does not helping.