Posted By: dgsmith ORA-12170 and 03113 - 04/13/22 02:06 PM
We have an intermittent problems with communications between clients and Oracle servers (both Windows.) We may see ORA-12170: TNS:Connect timeout occurred or ORA-03113: end-of-file on communication channel. When this happens there is no error on the Oracle server. We believe it is a network issue but we can't make it happen on demand and haven't been able to diagnose.

Sometimes a multi-user application using a session with ThreadSafe = true just hangs without generating an exception; it seems that the client waits indefinitely, and requests from other threads back up behind it. Should SQLNET.RECV_TIMEOUT and SEND_TIMEOUT help? If we used a TOracleSessionPool with a timeout set, would it terminate the thread?

Thanks or any suggestions.
Posted By: Marco Kalter Re: ORA-12170 and 03113 - 04/14/22 08:35 AM
ORA-03113 usually means that the Oracle Server process for the current session has crashed. Can you check if a user trace dump file exist on the database server that corresponds to this ORA-03113 error? Usually you will see an ORA-00600 error here, with some error codes that may help us find the cause of the problem. If it does, can you send it to me?

ORA-12170 might indicate an idle time-out issue. You could implement aa keep-alive function in your application (e.g. perform a "select * from dual" periodically when the application is idle) or check if a firewall or other network component might kill idle network sessions.
Posted By: dgsmith Re: ORA-12170 and 03113 - 04/14/22 02:51 PM
Thank you for the response. I don't have access to Oracle server logs, but we spent some time with DBAs on this issue a couple years ago and they said they saw nothing. Network people said they could monitor traffic and see what's going on if I could make it happen on demand, but I can't. I checked with DBAs just now, there is no idle timeout on our application users.

At this point I am not hoping to find a solution, just a way to deal with it that doesn't require extensive rewrites. I modified one app to make all the Oracle calls in separate threads so I could kill them if they took too long. That works, but I'm hoping for something easier to implement.
© Allround Automations forums