sqlnet.ora | tnsnames.ora | Def. value | server side | Description |
SQLNET.EXPIRE_TIMEOUT | YES | TCP keepalive setting (in minutes) | ||
SQLNET.INBOUND_CONNECT_TIMEOUT | 60 s | YES | To specify the time, in seconds, for a client to connect with the database server and provide the necessary authentication information. INBOUND_CONNECT_TIMEOUT_lsnr_name from listener.ora should be less than parameter from sqlnet.ora | |
SQLNET.OUTBOUND_CONNECT_TIMEOUT | CONNECT_TIMEOUT (overrides parameter SQLNET.OUTBOUND_CONNECT_TIMEOUT from sqlnet.ora) |
Superset of the TCP connect timeout interval. Without this parameter, a client connection request to the database server may block for the default TCP connect timeout duration (60 seconds) when the database server host system is unreachable. | ||
TCP.CONNECT_TIMEOUT | TRANSPORT_CONNECT_TIMEOUT (overrides TCP.CONNECT_TIMEOUT from sqlnet.ora) |
60 s | To specify the time, in seconds, for a client (per address) to establish a TCP connection | |
SQLNET.SEND_TIMEOUT | Specify the time, in seconds, for a database server to complete a send operation to clients, or for clients to complete a send operation after connection establishment. | |||
SQLNET.RECV_TIMEOUT | Specify the time, in seconds, for a database server to wait for client data after connection establishment. A client must send some data within the specified time interval. |
There are several parameter In the upper table which defines the behavior of server (client) processes regarding when to cut off a client connection during establishing link between client and server processes.
Generally the connection establishment goes through the following 3 phases (when TCP protocol is used) and time of connection establishment is consist of sum of times : initial connection establishment using TCP transport, time spent on authentication operations and time spent on establishing the connection with requested service from database.
It
worse to notice that these parameters and dependencies between them
works when a real Oracle client is trying to establish the
connection, not just, let's say, a tnsping utility, which is trying to
reach out the listener on the other side of connection (and SQLNET.OUTBOUND_CONNECT_TIMEOUT will not be relevant then).
In so called transport phase data are sent over the network using TCP transport. Here TCP.CONNECT_TIMEOUT (TRANSPORT_CONNECT_TIMEOUT) parameters define the timeout of connecting to every trying address from connection description. If not set then 60 seconds its default value. You may get the error TNS-12543 TNS:destination host unreachable sooner then 60 seconds, when network and routing configuration allows to figure out (using broadcast or multicast packages) that requested address is not available in existing network. You get an answer TNS-12535: TNS:operation timed out after 60 seconds when, for example, there is no allowed direct network access to requested listener port and broadcast packages are forbidden between networks.
After that the authentication services are entering into the game and parameters
SQLNET.OUTBOUND_CONNECT_TIMEOUT (CONNECT_TIMEOUT from tnsnames.ora) on the client side and
SQLNET.INBOUND_CONNECT_TIMEOUT on the server side define when to close the connection with client. INBOUND_CONNECT_TIMEOUT defines the time during which the client must provide all the information necessary for authentication and it's solely server parameter.
OUTBOUND_CONNECT_TIMEOUT is the client parameter which specifies the time in seconds during which the client must establish the connection with database.
Next, after successful connection establishing, SQLNET.SEND_TIMEOUT and SQLNET.RECV_TIMEOUT are taking into account if they're set. They oblige the server or client process to send data during specified time (in seconds). If they're not, the connection is disconnected. Oracle do not recommend to set SQLNET.RECV_TIMEOUT on the server side.
As regarding the connection failover, it's another story :)
Good Luck !
No comments:
Post a Comment